C ++字符串问题

时间:2009-11-14 15:05:00

标签: c++ string

我有一个非常简单的问题。

string str;
cin >> str;
cout << str;

如果我输入“Hello World”,我得到的输出只是“你好”。我知道这可能与空白有关。所以我的问题是如果我想要空格也应该怎么写?

我也尝试使用 getline(cin,str); ,但它只会在第一时间读取输入并跳过其余部分

3 个答案:

答案 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操作将看到输入缓冲区中的第一个字符是换行符,然后停止。