P*******b 发帖数: 1001 | 1 这个可以吗?
string s;
s = "hello" + "i" + s;
不是右结合吗?
我咋觉得应该可以啊。
谢谢 |
y**i 发帖数: 1112 | |
g**********1 发帖数: 1113 | 3 for string , I know +=. But not sure whether + is overloaded. Also I whether
it is allowed to + a string to const string. |
e**c 发帖数: 95 | 4 MM还是年轻了点.
try the following:
string s;
s = static_cast("hello") + static_cast("i") + s;
Will work.
【在 P*******b 的大作中提到】 : 这个可以吗? : string s; : s = "hello" + "i" + s; : 不是右结合吗? : 我咋觉得应该可以啊。 : 谢谢
|
j******v 发帖数: 2 | 5 不可以吧 + 左右两边至少要有一个string类型的
"hello"+"i"等于两个string literals相加啊 |
y**i 发帖数: 1112 | 6 这个肯定work,这个都显式转换了
我想楼主的意思应该是这里的字符常量应该可以隐式转换成string类型的,但是楼主认
为转换的时候“+”号从右到左执行,这样当s第一次遇到"i"的时候,"i"就自动做了
static_cast("i"),然后再执行最左边的隐式转换。但我认为问题出在了"+"
实际上是从左到右对吧,比如3+2+1=5+1但不是3+3(当然结果相同)。
所以可以这么写:
string s;
s = s + "hello" + "i";
但没有保持原程序的意思,尤其是s有初始值的情况。
【在 e**c 的大作中提到】 : MM还是年轻了点. : try the following: : string s; : s = static_cast("hello") + static_cast("i") + s; : Will work.
|
P*******b 发帖数: 1001 | 7 谢谢,看来+真的是左结合。
我一直以为都是右结合呢
【在 y**i 的大作中提到】 : 这个肯定work,这个都显式转换了 : 我想楼主的意思应该是这里的字符常量应该可以隐式转换成string类型的,但是楼主认 : 为转换的时候“+”号从右到左执行,这样当s第一次遇到"i"的时候,"i"就自动做了 : static_cast("i"),然后再执行最左边的隐式转换。但我认为问题出在了"+" : 实际上是从左到右对吧,比如3+2+1=5+1但不是3+3(当然结果相同)。 : 所以可以这么写: : string s; : s = s + "hello" + "i"; : 但没有保持原程序的意思,尤其是s有初始值的情况。
|
y**i 发帖数: 1112 | 8 看wiki:http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
一元+是右结合,二元+是左结合
【在 P*******b 的大作中提到】 : 谢谢,看来+真的是左结合。 : 我一直以为都是右结合呢
|
x********r 发帖数: 1206 | 9 this point is right.
【在 j******v 的大作中提到】 : 不可以吧 + 左右两边至少要有一个string类型的 : "hello"+"i"等于两个string literals相加啊
|