Я пишу этот кусок кода в C++.Почему строка не печатает нужный результат в C++?
std::string s;
s[0] = 'a';
std::cout << s;
Результат должен быть:
Почему это не печатать ничего? Вопрос тривиален, но кто-нибудь может объяснить лучше.
Я пишу этот кусок кода в C++.Почему строка не печатает нужный результат в C++?
std::string s;
s[0] = 'a';
std::cout << s;
Результат должен быть:
Почему это не печатать ничего? Вопрос тривиален, но кто-нибудь может объяснить лучше.
std::string s; // s is default constructed (s.length() returns 0)
//s[0] = 'a'; // modifying elements that are out of bounds causes undefined behavior
s.resize(1);
s[0] = 'a'; // OK, s.length() is 1
std::cout << s << std::endl;
Размер вашей строки равен нулю от начала, поэтому вам не разрешен доступ к нулевому индексу. Вместо того, чтобы сделать
s = "a";
Теперь строка имеет размер 1 и Допускается доступ с [0]
В общем, вы можете индексировать от нуля до размера-1, но только тогда, когда размер> = 1
Я рекомендую вам посетить http://www.cplusplus.com/reference/string/string/ –