在流中读取空白字符

在 C/C++ 中,用 scanf 和 getchar 是可以拿到流里面的空白字符的:

char c;
// c = getchar();
scanf("%c", &c);
// 假设 stdin 里的内容是" \thello world\n",则 c 的值是' ',即空格,ASCII 是 32

但是 std::cin 默认会跳过空白符的(如空格符、制表符、换行符等):

char c;
cin >> c;
// 如果 stdin 里的内容是" \thello world\n",则 c 的值是'h'

要让 cin 能够读取空白字符,可以提前设置 std::cin >> std::noskipws;。如果要恢复默认,则 std::cin >> std::skipws;