我的代码必须使用cin识别空白字符,所以当我使用空格作为输入时,它应该识别空间。我该怎么做?
答案 0 :(得分:7)
您可以使用std::noskipws
来禁用std::cin
默认执行的空格跳过:
#include <iostream>
#include <iomanip>
int main() {
char c;
std::cin >> std::noskipws;
while (std::cin >> c) {
if (c == ' ')
std::cout << "A space!" << std::endl;
}
return 0;
}
答案 1 :(得分:3)
string str;
getline(cin, str); // get the whole line
如果您想处理c字符串,可以使用与字符串cin.getline(....)
不同的上述getline
。
答案 2 :(得分:3)
Cin打破任何类型的空白。如果需要读取整行,则需要使用get line函数:
getline(cin, line);
其中line是std :: string。这仍然会切断任何新线路或回车。
要测试空格的字符串,请检查字符串中的每个字符,并将其与空格字符“”进行比较。这留给读者练习;)
答案 3 :(得分:1)
使用cin.getline读取带空格的行。
http://www.cplusplus.com/reference/iostream/istream/getline/