2016-11-08 43 views
-5

我有一個由數據點和與這些數據點相關的數字組成的文件。例如,該文件看起來像這樣:在C++中讀取額外數據

(1,2) 45 
(3,4) 12 
(23,9) 6 90 
(3,5) 4 8 

對於每個數據點,我想要設置變量「int num1」和「int num2」。正如你所看到的,有時我必須讀取附加到我的數據點的附加號碼。當沒有額外的號碼時,我將num1和num2設置爲給定的值。我從座標中獲得x和y沒有問題,但我不確定如何檢查以確保我得到兩個數字。我覺得我必須使用getline(),但我不知道該從哪裏去。該文件保存爲「ins」。

char parentheses1, parentheses2, comma; 
int x, y, num1, num2; 
ins >> parentheses1 >> x >> comma >> y >> parentheses2; 
ins >> num1 >> num2; 
+0

當你得到你想要的東西后,你可以使用'getline'來吃剩下的線。 – NathanOliver

+0

有點得到你想要我們編寫代碼的感覺 –

+1

用getline將每一行讀入std :: string然後解析該行。 –

回答

1

Take Option 2 from this answer作爲您的代碼的基礎。

閱讀從stringstream的成x和y

iss >> parentheses1 >> x >> comma >> y >> parentheses2; 

,然後收集數字,直到有沒有留下就行了

std::vector<int> numbers; // dynamic array of numbers 
int temp; 
while (iss >> temp) // exits as soon as you can't read an int from the stream 
{ 
    numbers.push_back(temp); // store in vector 
} 

可以簡化一點上面,如果有從未更多比如說2個數字。