Я начинаю в 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;
Но сама строка не отображается с этим line:
cout << "altered : " << altered << endl;
Хотелось бы знать, почему это происходит.
Если у вас уже есть ответ ниже, попробуйте выяснить, как включить диагностику в вашей программе. Код, который у вас есть, действительно багги, но с использованием диагностического режима, который предоставляют компиляторы C++, эта ошибка могла быть легко обнаружена. –
Пожалуйста, просмотрите все ответы и отметьте тот, который наилучшим образом отвечает на ваш вопрос. Нехорошо оставить вопрос открытым :-) –
Пожалуйста, обратите внимание, что код C++ не [* scripts *] (https://en.wikipedia.org/wiki/Scripting_language), а * исходный код *. Сценарии интерпретируются, а исходный код C++ [скомпилирован] (https://en.wikipedia.org/wiki/Compiled_language). –