c++中从整数到字符串的转换中,左移操作符是做什么的?
what does the left shift operator do in converting from integer to string in c++
假设你想把一个整数转换成字符串这是c++中的方法
int c1=999;
stringstream ss;
ss<<c1;
string str=ss.str();
如何在c++中转换成字符串?上面程序的第三行stringstream包含了什么在这个语句中我的意思是左移运算符(我们知道符号'<<'是用来左移的)在这里是做什么来转换成字符串
要将整型转换为字符串(非常基本),您必须遍历所有数字,将其转换为常规字符,并将其放入字符串:
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转换为string的一种非常基本的方法,我确信在操作符"<<"中做得更好,但是您明白了。
这里的左移是由追加函数重载的,可以把它看作s.append(c1),其中追加可以有多个函数追加(int i)追加(字符串)追加(字节b)等
每个函数做实际的转换到正确的字符串,并追加它…
您的代码中没有左移操作符。在C中,<<
左移。在c++中,它是流插入操作符(出于C兼容性的原因,也支持左移)。
c++中允许重载各种操作符,包括按位左移<<。从概念上讲,你可以覆盖它做任何事情;唯一的限制是不能改变操作数的数量。
c++ IO流库中的流类利用了这一点。在语法上使用<<以某种方式将实参写入流,显然,按位移动流没有任何意义,因此操作符也可以用于做其他事情。这就是ss<<c1
;在干什么。它没有做任何像位移位这样的事情。
有一种观点认为操作符重载是令人困惑的(也许这就是为什么要问这个问题)。
<<
在这种情况下并不完全是左移操作符。
是一个流操作符。
它追加(插入)字符到字符串流中。
相关文章:
- c++中从整数到字符串的转换中,左移操作符是做什么的?
- 对象文件中的ostream操作符发生了什么?
- 为特定类重写new和delete操作符的原因是什么?
- 这里的虚操作符()()的目的是什么?
- c++中的操作符T* (T是模板形参)是什么?
- 赋值操作符的返回类型是什么?
- 重载操作符,本例中重载操作符的目的是什么?
- c++操作符重载中返回引用和不返回引用的区别是什么?
- new操作符返回什么?
- 标准库中自赋值不安全的move赋值操作符的基本原理是什么?
- 朋友操作符的代码示例?c++头文件,朋友在这里做什么
- c++中的定位new操作符是什么,java中有吗?
- alignof操作符的用途是什么?
- 操作符在Qt中做什么?
- 如果在调用时没有取赋值操作符的返回类型,将会发生什么?
- 字符串比较的小于操作符无论在什么情况下都会产生相同的结果
- const关键字在操作符定义中做什么?
- 当我将操作符重载为模板时会发生什么?
- 是什么?'操作符在c++中的意思
- 元操作符..的优先级是什么?