我正在從數據流中讀取數據到一個給定長度的char數組中,並且我希望使讀取的最大寬度足夠大以適應char數組。如何在C++中設置最大讀取長度?
我使用char數組的原因是我的規範的一部分是任何單個標記的長度不能超過某個值,所以我保存了一些構造函數調用。
我想寬度()做了什麼,我想,但我顯然是錯誤的...
編輯:我使用的是流提取運算符來進行提取,因爲這些都是分隔值的純文本文件由空白。
我正在從數據流中讀取數據到一個給定長度的char數組中,並且我希望使讀取的最大寬度足夠大以適應char數組。如何在C++中設置最大讀取長度?
我使用char數組的原因是我的規範的一部分是任何單個標記的長度不能超過某個值,所以我保存了一些構造函數調用。
我想寬度()做了什麼,我想,但我顯然是錯誤的...
編輯:我使用的是流提取運算符來進行提取,因爲這些都是分隔值的純文本文件由空白。
char x[4];
cin.width(4);
cin >> x;
cout << x;
輸入: 「ABCDEF」
輸出: 「ABC」 (x[3]
是空終止字符)
寬度在這種情況下工作得很好。
注意:經驗測試表明cin.width調用僅持續一個流操作。改用cin >> setw(4) >> x;
可能更方便,雖然這需要iomanip
。
如果您正在處理文本,你要尋找的get
功能:http://cppreference.com/wiki/io/get
const int size = 200;
char myArray[size] = {};
cin.get(myArray, size);
注:僅size - 1
字符閱讀,這讓在myarray的一個NULL終止符。
如果它是原始數據,你可能會喜歡read
:http://cppreference.com/wiki/io/read
const int size = 200;
char myArray[size] = {};
cin.read(myArray, size);
size
字節讀取。
我不明白。 'istream :: read()'可以指定想要讀入緩衝區的字符數量。爲什麼這不適合你? – 2010-03-18 16:20:05
我的意思是我希望提取操作符將自己限制到一定數量的字符長度。然而,我越是想到這一點,那麼我越意識到這一點,我可能不是標準的行爲...... – Alex 2010-03-18 16:26:39
你的價值觀是全部文本的,還是其中的一些數字? – Bill 2010-03-18 18:10:51