假设您要将整数转换为字符串,这是c ++中的方法
int c1=999;
stringstream ss;
ss<<c1;
string str=ss.str();
如何在c ++中转换为字符串? stringstream包含什么以及上述程序的第3行 在那个陈述中,我的意思是左移运算符(因为我们知道符号'&lt;&lt;'用于左移)在这里做转换为字符串
答案 0 :(得分:1)
这里的左移由append函数重载,想象一下 ss.append(c1)其中append可以有多个函数 追加(int i) 追加(字符串s) 追加(字节b) 等
每个函数都实际转换为正确的字符串并附加它......
答案 1 :(得分:1)
要将int转换为字符串(非常基本),您必须遍历所有数字,将其转换为常规字符,并将其放在字符串中:
int toConvert = 999;
string res = "";
while (toConvert)
{
int lastDigit = toConvert % 10; //retrieve last digit
char c = lastDigit + '0'; //translate it to the char corresponding
string reverse(c); //We have to add it in front of the string, or otherwise
reverse.append (res); // the digits will be reversed.
res = reverse;
toConvert /= 10;
}
这是将int转换为字符串的一种非常基本的方法,我确信它在运算符“&lt;&lt;”中做得更好,但是你明白了。
答案 2 :(得分:0)
您的代码中没有左移操作符。在C中,<<
左移。在C ++中,它是流插入运算符(由于C兼容性的原因,也支持左移)。
答案 3 :(得分:0)
您可以在C ++中重载各种运算符,包括按位左移&lt;&lt ;.从概念上讲,你可以覆盖它做任何事情;唯一的限制是操作数的数量无法改变。
C ++ IO流库中的流类利用了这一点。使用&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;以某种方式将参数写入流中,显然,按位移位流没有意义,因此操作符也可以用来做其他事情。这就是ss<<c1
;是在做。它没有像按位移动那样做。
有一种思想流派认为运营商超载令人困惑(也许这就是为什么要问这个问题)。这就是运营商重载没有成为Java的原因。
答案 4 :(得分:0)
<<
并不完全是左移算子。
它是一个流操作员。
将字符附加(插入)到您的字符串流中。