2016-09-24 107 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和它被允許訪問的S [0]

一般來說,你可以從零到尺寸-1,但僅當大小> = 1

相關問題