[英]How to set maximum read length for a stream in C++?
我正在将数据从流读取到给定长度的char数组中,并且我想使读取的最大宽度足够大以适合该char数组。
我使用char数组的原因是我的规范的一部分是任何单个标记的长度不能超过某个值,所以我节省了一些构造函数调用。
我认为width()做了我想要的,但我显然错了......
编辑:我正在使用流提取操作符来执行提取,因为这些是平面文本文件,其值由空格分隔。
如果您正在处理文本,那么您正在寻找get
函数: http : //cppreference.com/wiki/io/get
const int size = 200;
char myArray[size] = {};
cin.get(myArray, size);
注意:只读取size - 1
读取size - 1
字符,在myArray中留下NULL终止符。
如果是原始数据,您可能更喜欢read
: http : //cppreference.com/wiki/io/read
const int size = 200;
char myArray[size] = {};
cin.read(myArray, size);
读取size
字节。
char x[4];
cin.width(4);
cin >> x;
cout << x;
输入:“abcdef”
输出:“abc”( x[3]
为空终止字符)
宽度在这种情况下工作正常。
注意:经验测试表明cin.width调用仅持续一个流操作。 使用cin >> setw(4) >> x;
可能更方便cin >> setw(4) >> x;
相反,虽然这需要iomanip
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.