C++ 如何打印职位
因为x_str、y_str是本地的,所以我没有在这个函数中得到正确的输出。(非法字符打印在x_str和y_str的位置) 我不想在我的类中再添加两个成员变量x_str,y_str 因此,为了获得正确的输出,可以替换此函数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_
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;