2015-12-30 44 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);