2015-12-30 45 views

回答

1

您有一個空字符串。其中沒有字符,包括第0個字符,您正在嘗試閱讀。實際上你需要在字符串添加字符:

std::string l; 
l.push_back('\0'); //Or any other character 
std::cin >> l[0]; 
+0

代替的push_back,你可以做一個調整大小。這將避免使用魔法角色推回。在一些實現中,它甚至可以避免push_back可能發生的額外分配 – bashrc

2

你需要做的

cin>>l; 

在你現在的代碼狀態,當您嘗試訪問l[0]您試圖訪問一個內存位置,其可能或者可能不在那裏。 cin >> l[0]不會更改保持爲0的字符串的大小。

因此,當您嘗試執行cout << l時,您正在有效地打印空字符串。

另一種方法是

string s; 
s.resize(1);