C++ 如何在C++;?

C++ 如何在C++;?,c++,iostream,stringstream,C++,Iostream,Stringstream,我正在将数据从一个流读取到一个给定长度的字符数组中,我希望使读取的最大宽度足够大,以适合该字符数组 我使用char数组的原因是,我的规范的一部分是,任何单个令牌的长度都不能超过某个值,因此我为自己节省了一些构造函数调用 我以为width()做了我想做的,但我显然错了 编辑:我正在使用流提取操作符来执行提取,因为这些是用空格分隔的值的平面文本文件 如果您正在处理文本,则需要查找get函数: 注意:只读取size-1字符,这会在myArray中留下一个空终止符 如果是原始数据,您可能更喜欢read:

我正在将数据从一个流读取到一个给定长度的字符数组中,我希望使读取的最大宽度足够大,以适合该字符数组

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

我以为width()做了我想做的,但我显然错了


编辑:我正在使用流提取操作符来执行提取,因为这些是用空格分隔的值的平面文本文件

如果您正在处理文本,则需要查找
get
函数:

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

如果是原始数据,您可能更喜欢
read

读取
大小
字节。

字符x[4];
char x[4];
cin.width(4);
cin >> x;
cout << x;
宽度(4); cin>>x;
cout>setw(4)>>x取而代之,尽管这需要
iomanip

我不明白
istream::read()
用于指定要读入缓冲区的字符数。为什么这对您不起作用?我的意思是,我希望提取操作符将自己的长度限制为一定数量的字符。然而,我越是思考这个问题,我就越意识到这可能不是标准行为……您的值都是文本,还是其中的一些是数字?请注意,如果输入包含空格,这将失败。尝试输入:“abcdef”。输出:“A”。比尔:我认为这是件好事。OP说这些值是用空格分隔的。
const int size = 200;
char myArray[size] = {};

cin.read(myArray, size);
char x[4];
cin.width(4);
cin >> x;
cout << x;