假设我有示例代码:
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()));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句