5

我正在将流中的数据读取到给定长度的 char 数组中,并且我想让读取的最大宽度足够大以适合该 char 数组。

我使用 char 数组的原因是我的规范的一部分是任何单个标记的长度都不能超过某个值,所以我为自己节省了一些构造函数调用。

我认为 width() 做了我想要的,但我显然错了......

编辑:我使用流提取运算符来执行提取,因为这些是纯文本文件,其值由空格分隔。

4

2 回答 2

5

如果您正在处理文本,您正在寻找该get功能:http ://cppreference.com/wiki/io/get

const int size = 200;
char myArray[size] = {};

cin.get(myArray, size);

注意:只size - 1读取字符,这会在 myArray 中留下一个 NULL 终止符。

如果是原始数据,您可能更喜欢readhttp ://cppreference.com/wiki/io/read

const int size = 200;
char myArray[size] = {};

cin.read(myArray, size);

size字节被读取。

于 2010-03-18T16:20:55.547 回答
4
char x[4];
cin.width(4);
cin >> x;
cout << x;

输入:“abcdef”
输出:“abc”(x[3]为空终止字符)

在这种情况下,宽度可以正常工作。

注意:经验测试表明 cin.width 调用仅持续一个流操作。使用它可能更方便cin >> setw(4) >> x;,尽管这需要iomanip.

于 2010-03-18T16:26:36.457 回答