【发布时间】:2009-11-14 15:05:00
【问题描述】:
我有一个非常简单的问题。
string str;
cin >> str;
cout << str;
如果我输入“Hello World”,我得到的输出只有“Hello”。我知道这可能与空格有关。所以我的问题是,如果我也想要空格,我应该怎么写?
我也尝试过使用 getline(cin, str); 但它只会在第一次读取输入并跳过其余部分
【问题讨论】:
我有一个非常简单的问题。
string str;
cin >> str;
cout << str;
如果我输入“Hello World”,我得到的输出只有“Hello”。我知道这可能与空格有关。所以我的问题是,如果我也想要空格,我应该怎么写?
我也尝试过使用 getline(cin, str); 但它只会在第一次读取输入并跳过其余部分
【问题讨论】:
getline(cin, str) 应该可以工作,但如果遇到“字符跳过”,您可能需要在调用它之前清除输入缓冲区:
std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );
std::string str;
std::getline(std::cin, str);
【讨论】:
getline(cin, str) 是正确的方法。你是什么意思它只会在第一次读取输入并跳过其余部分?
【讨论】:
问题是,operator >> 在输入缓冲区中留下下一个空格/换行符/任何内容。所以如果你调用cin >> str后跟getline( cin, str ),getline操作会看到输入缓冲区的第一个字符是换行符,然后停止。
【讨论】: