[英]Limiting input size with std::setw in std::cin
假设我有示例代码:
std::string s;
std::cin >> std::setw(4) >> s;
std::cout << s;
现在输入abcdef
的结果将是abc
,对于abc
它也将是abc
。 问题是如何检查字符串是否由于限制而在中间分割,或者结果字符串是否为实际字符串? 我需要知道输入是否适合或是否跳过某些数据。
虽然我知道在读入char*
时我们会考虑流的宽度char*
我不知道在读入std::string
时也会考虑它。 假设是,读取将在三个条件下停止:
eof()
。 也就是说,你可以检查in.eof()
和std::isspace(in.peek()
。那么,你真正需要使用的流是否有一个有趣的std::ctype<char>
facet
std::isspace(in.getloc(),
std::char_traits<char>::to_char_type(in.peek()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.