2015-06-06 20 views
2

所以我想從文件中獲取信息,它將以名稱(字符串)開頭,並最終變爲整數。使用fstream和sstream在一起從文件中分離字符串/整數

Ex。對於nums.txt

James Smith 
John Jones 
Amy Li 
1 3 2 3 
3 2 4 1 0 

我想要寫存儲每個名稱(每行一個名稱),然後當端名稱和號碼開始一個程序,它開始將每個#發生於陣列。 I.E.如果3點2的出現,我想

numInt[2] to equal 3 

我想這樣做,使用ifstream的採取從文件輸入,並使用字符串流爲字符串和整數排序。到目前爲止我有這個

int main() { 
string names[10]; 
int numNames = 0; 
int numInt[100] = {}; 
ifstream file("nums.txt"); 
stringstream ss; 
string s; 
int n; 

while (file >> ss) { 
    while (ss >> s) { 
    names[numNames] = s; 
    numNames++; 
    } 
    while (ss >> n) { 
    numInt[n]++; 
    } 
} 
return 0; 
} 

我知道我正在討論這個錯誤,但我不知道如何正確地做到這一點。

回答

2

我想我會做這樣的事情:

while (file >> ss) { 
    if (isalpha((unsigned char)ss[0]) 
     names.push_back(ss); 
    else { 
     std::istringstream buf(ss); 
     int n; 

     while (buf >> n) 
      numbers.push_back(n); 
    } 
} 

這支持你問什麼,但不嚴格執行它。 IOW,如果你有這樣的事情:

Joe Blow 
1 2 3 
Jerry Coffin 

...這將放在names123「喬吹」和「傑裏棺材」的numbers

相關問題