C++ 如何打印职位

C++ 如何打印职位,c++,string,C++,String,因为x_str、y_str是本地的,所以我没有在这个函数中得到正确的输出。(非法字符打印在x_str和y_str的位置) 我不想在我的类中再添加两个成员变量x_str,y_str 因此,为了获得正确的输出,可以替换此函数 string Pos::getPosReport(){ string x_str; x_str = x; string y_str; y_str = y; return string("(" + x_

因为x_str、y_str是本地的,所以我没有在这个函数中得到正确的输出。(非法字符打印在x_str和y_str的位置) 我不想在我的类中再添加两个成员变量x_str,y_str

因此,为了获得正确的输出,可以替换此函数

string Pos::getPosReport(){
        string x_str;
        x_str = x;
        string y_str;
        y_str = y;
       return string("(" + x_str + "," + y_str + ")" );
    }
编辑:

class Pos {
    int x;
    int y;
public:
    Pos();
    Pos(Pos const&);
    Pos(int,int);

    Pos&     operator=(Pos const&);
    bool    operator==(Pos const&);
    bool    operator!=(Pos const&);

    void    setPos(Pos const&);
    void    setPos(int,int);

    void    setx(int);
    void    sety(int);

    int    getx() const ;
    int    gety() const ;

    string getPosReport();

    virtual ~Pos();
};
std::stringstream-ss;

ss问题不在于
x_-str
y_-str
是局部变量,而是赋值没有达到你期望的效果。这不是将
int
转换为
string


您可以使用
\u itoa()
int
转换为
char*
stringstream
,如Michael的回答所示。

问题不清楚。要解决的实际问题是什么?int被转换为定义了运算符=的char。字符串只包含一个字符。@sftrabbit如果您有int 1,它将不会转换为字符
'1'
(这是对您先前删除的注释的响应:“这是标准的吗?”)是的,我相信是这样。如果int的值不适合字符,则结果将由实现定义。如果实现定义了要签名的字符,则转换也将由实现定义。将值为1的int转换为字符,字符的值也将为1。然后,它表示的字符是特定于语言环境的。如果我们要列出所有解决方案,我还要提到gettext附带的
autoprintf
;return(ss)这不起作用,因为
operatorOops,是我的错。谢谢你的修复,@EAGER\u学生。
std::stringstream ss;
ss << "(" << x << "," << y << ")";
return ss;