1

假设我有示例代码:

std::string s;
std::cin >> std::setw(4) >> s;
std::cout << s;

现在输入abcdef结果将是abc并且abc它也将是abc。问题是如何检查字符串是否由于限制而在中间拆分或结果字符串是实际字符串?我需要知道输入是否适合或某些数据被跳过。

4

1 回答 1

4

虽然我知道在读入 a 时会考虑流的宽度char*,但我不知道在读入 a 时也会考虑它std::string。假设是,阅读将在三种情况下停止:

  1. 在这种情况下,流被完全读取eof()
  2. 下一个字符是空格。
  3. 读取需要读取的字符数。

也就是说,您可以检查in.eof()std::isspace(in.peek()std::ctype<char>好吧,您真正需要使用的流是否有一个有趣的方面

std::isspace(in.getloc(),
    std::char_traits<char>::to_char_type(in.peek()));
于 2013-10-13T17:33:49.560 回答