假设我有示例代码:
std::string s;
std::cin >> std::setw(4) >> s;
std::cout << s;
现在输入abcdef
结果将是abc
并且abc
它也将是abc
。问题是如何检查字符串是否由于限制而在中间拆分或结果字符串是实际字符串?我需要知道输入是否适合或某些数据被跳过。
虽然我知道在读入 a 时会考虑流的宽度char*
,但我不知道在读入 a 时也会考虑它std::string
。假设是,阅读将在三种情况下停止:
eof()
。也就是说,您可以检查in.eof()
和std::isspace(in.peek()
。std::ctype<char>
好吧,您真正需要使用的流是否有一个有趣的方面
std::isspace(in.getloc(),
std::char_traits<char>::to_char_type(in.peek()));