How to set maximum read length for a stream in C++?
c++, iostream, stringstream
Solution
char x[4];
cin.width(4);
cin >> x;
cout << x;
Input: "abcdef" Output: "abc" (`x[3]` is null terminating char)
Width works fine in this case.
Note: Empirical testing indicates that the cin.width call only lasts for one stream operation. It may be more convenient to use `cin >> setw(4) >> x;` instead, though this requires `iomanip`.
Problem
I'm reading data from a stream into a char array of a given length, and I'd like to make the maximum width of read to be large enough to fit in that char array. The reason I use a char array is that part of my specification is that the length of any individual token cannot exceed a certain value, so I'm saving myself some constructor calls. I thought width() did what I wanted, but I was apparently wrong... EDIT: I'm using the stream extraction operators to perform the extraction, since these are flat text files with values separated by whitespace.