我是C++的初学者,我目前正在使用字符串。 我的问题是为什么编译我在下面提供的脚本时,我可以得到字符串的字符,当我使用索引符号,但不能使用cout
获得字符串本身。 这是代码:C++:通过索引更改字符串
#include <iostream>
#include <string>
using namespace std;
int main()
{
string original; // original message
string altered; // message with letter-shift
original = "abc";
cout << "Original : " << original << endl; // display the original message
for(int i = 0; i<original.size(); i++)
altered[i] = original[i] + 5;
// display altered message
cout << altered[0] << " " << altered[1] << " " << altered[2] << endl;
cout << "altered : " << altered << endl;
return 0;
}
当我运行此脚本,“改变”的字符串中的字符都正确地与这条线显示:
cout << altered[0] << " " << altered[1] << " " << altered[2] << endl;
但是字符串本身是不是跟这个显示行:
cout << "altered : " << altered << endl;
我想知道为什么会发生这种情况。
虽然您已经在下面找到了答案,但请尝试了解如何在程序中启用诊断。您拥有的代码实际上是错误的,但使用C++编译器提供的诊断模式,可以轻松检测到该错误。 –
请现在回答所有答案,并标出最能解答您问题的答案。打开问题并不好:-) –
请注意,C++代码不是[* scripts *](https://en.wikipedia.org/wiki/Scripting_language),而是*源代码*。脚本被解释并且C++源代码是[编译](https://en.wikipedia.org/wiki/Compiled_language)。 –