lch*_*lch 0 c++ string int concatenation stdstring
string words[5];
for (int i = 0; i < 5; ++i) {
words[i] = "word" + i;
}
for (int i = 0; i < 5; ++i) {
cout<<words[i]<<endl;
}
Run Code Online (Sandbox Code Playgroud)
我期望结果如下:
word1
.
.
word5
Run Code Online (Sandbox Code Playgroud)
在控制台中打印如下:
word
ord
rd
d
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我这个的原因.我相信在java中它将按预期打印.
C++不是Java.
在C++中,"word" + i是指针算术,它不是字符串连接.请注意,字符串文字 的类型"word"是const char[5](包括空字符'\0'),然后衰减到const char*此处.因此,"word" + 0你将得到一个指向const char*第一个字符(即w)的类型的指针,因为"word" + 1你将获得指向第二个字符(即o)的指针,依此类推.
你可以使用operator+同std::string和std::to_string(因为C++ 11)在这里.
words[i] = "word" + std::to_string(i);
Run Code Online (Sandbox Code Playgroud)
顺便说一句:如果你想word1〜word5,你应该用std::to_string(i + 1)而不是std::to_string(i).
| 归档时间: |
|
| 查看次数: |
2133 次 |
| 最近记录: |