2016-09-24 2 views
1

Я пишу этот кусок кода в C++.Почему строка не печатает нужный результат в C++?

std::string s; 
s[0] = 'a'; 
std::cout << s; 

Результат должен быть:

Почему это не печатать ничего? Вопрос тривиален, но кто-нибудь может объяснить лучше.

+1

Я рекомендую вам посетить http://www.cplusplus.com/reference/string/string/ –

ответ

1
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; 
7

Размер вашей строки равен нулю от начала, поэтому вам не разрешен доступ к нулевому индексу. Вместо того, чтобы сделать

s = "a"; 

Теперь строка имеет размер 1 и Допускается доступ с [0]

В общем, вы можете индексировать от нуля до размера-1, но только тогда, когда размер> = 1

Смежные вопросы