抽象。使用cin和getline读取下面这种文本
To\n
to be or not to be is a question\n
c++首先会把这些文本输入缓冲区
假设代码是这样:
cin >> str;
getline(cin, line);
那么cin会首先读取To然后把To后面的换行符留在缓冲区
缓冲区就会变成这样:
\n
to be or not to be is a question\n
然后由于getline只读\n之前的内容,所以getline(cin, line)就只会读到第一个换行符结束
因此虽然期望是读到
str = "To"
line = "to be or not to be is a question"
实际上会读到
str = "To"
line = ""
真的很逆天乐
解决办法就是在getline(cin, line)前面再加一行getline(cin, dummy)之类的把缓冲区类的\n删掉
真无语
caoxin
抽象。使用cin和getline读取下面这种文本
To\n
to be or not to be is a question\n
c++首先会把这些文本输入缓冲区
假设代码是这样:
cin >> str;
getline(cin, line);
那么cin会首先读取To然后把To后面的换行符留在缓冲区
缓冲区就会变成这样:
\n
to be or not to be is a question\n
然后由于getline只读\n之前的内容,所以getline(cin, line)就只会读到第一个换行符结束
因此虽然期望是读到
str = "To"
line = "to be or not to be is a question"
实际上会读到
str = "To"
line = ""
真的很逆天乐
解决办法就是在getline(cin, line)前面再加一行getline(cin, dummy)之类的把缓冲区类的\n删掉
真无语