2016-07-29 33 views
-1

我想用C++在表中輸入數據。 我需要輸入不同的列。問題是,當我使用cin時,它跳到下一行,而不是繼續在同一行。在C++中輸入數據表

這裏是我使用的代碼:

string itemname; 
int amount; 
float price; 
cout << setprecision(2); 
cout << fixed; 
cout << left << setw(30) << string(30, '-') << endl; 
cout << left << setw(10) << "Itemname" << setw(10) << right << "Amount" << setw(10) << right << "Price" << endl; 
cin >> left >> setw(10) >> itemname >> setw(10) >> right >> amount >> setw(10) >> right >> price; 

有什麼事我可以比CIN這樣做使用其他?

回答

0

輸入運算符>>通常在空間上分開,對於幾乎所有類型的螞蟻而言,它都會跳過前導空白。所以,當使用>>讀取字符串或數字時,只要有一個空格(空格,製表符,換行符等),那麼多少空格就沒有關係。

所有其他格式不用於輸入,左/右對齊或字段寬度無關緊要,例如,

cin >> itemname >> amount >> price; 

你應該得到你的三個項目。

而實際回答你的問題:這取決於。如果您想使用C++和C++流類從標準輸入讀取,那麼您只能使用std::cin。否則,您可以使用舊的C標準I/O函數從stdin中讀取,但如果嘗試使用字段寬度,則會出現其他問題,例如功能家族意味着別的東西。使用標準的輸入,這是讀取文本輸入的唯一標準方式


輸入(可能轉化爲其它類型的)不被磁場定向,但面向行的。

輸入

foo 1 2 

是完全一樣的

foo   1 2 
+0

是的,但是當我使用這個我不會得到適當的欄目,有沒有什麼辦法,我可以做到這一點? –

+1

@ParthSindhu列僅由空格分隔嗎?然後我的答案中的代碼將很好地*讀*輸入。標準輸入(在C或C++中)不是字段方式。底層代碼和程序(終端模擬器和內核和緩衝區)讀取*行*,然後簡單地解析行中的字段。 –