我有一个非常简单的问题。
string str;
cin >> str;
cout << str;
如果我输入“Hello World”,我得到的输出只是“你好”。我知道这可能与空白有关。所以我的问题是如果我想要空格也应该怎么写?
我也尝试使用 getline(cin,str); ,但它只会在第一时间读取输入并跳过其余部分
答案 0 :(得分:2)
getline(cin, str)
应该可以工作,但如果你遇到“char skip”,你可能必须在调用之前清除输入缓冲区:
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
std::string str;
std::getline(std::cin, str);
答案 1 :(得分:1)
getline(cin,str)是正确的方法。你是什么意思它只会在第一次阅读输入并跳过剩下的时间?
答案 2 :(得分:0)
问题是,operator >>
在输入缓冲区中留下下一个空格/换行符/任何内容。因此,如果您调用cin >> str
后跟getline( cin, str )
,则getline操作将看到输入缓冲区中的第一个字符是换行符,然后停止。