2012-09-04 59 views
0

我有這樣文本文件解析C++ |用空白分隔。

Path 
827 196 
847 195 
868 194 
889 193 
909 191 
929 191 
951 189 
971 186 
991 185 
1012 185 
Path 
918 221 
927 241 
931 261 
931 281 
930 301 
931 321 
927 341 
923 361 
921 382 

我使用getline函數的閱讀每一行文本的文本文件,我想在一個單一的線2號解析爲兩個不同的整數變量.The代碼我有到目前爲止。

int main() 
{ 

    vector<string> text_file; 

    int no_of_paths=0; 

    ifstream ifs("ges_t.txt"); 
    string temp; 

    while(getline(ifs, temp)) 
    { 
      if (temp2.compare("path") != 0) 
      { 
//Strip temp string and separate the values into integers here. 
      } 

    } 


} 

回答

2
int a, b; 
stringstream ss(temp); 
ss >> a >> b; 
+0

如何將字符串從stringstream中分離出來並保存爲整數,而不用調用atoi()函數? – rajat

+1

'atoi'是C做事的方式。使用IOstreams和[提取操作符](http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/)是C++的做事方式。 – acraig5075

+0

ohk很酷謝謝。 – rajat

1

事情是這樣的:

#include <string> 
#include <sstream> 
#include <fstream> 

std::ifstream ifs("ges_t.txt"); 

for (std::string line; std::getline(ifs, line);) 
{ 
    if (line == "Path") { continue; } 

    std::istringstream iss(line); 
    int a, b; 

    if (!(iss >> a >> b) || iss.get() != EOF) { /* error! die? */ } 

    std::cout << "You said, " << a << ", " << b << ".\n"; 
} 
+0

這給出了一個錯誤:變量'std :: istringstream iss'有初始值設定項但是不完整類型 – rajat

+0

@rajat:你包括頭部? –

+0

該死,不,謝謝。 – rajat

1

考慮到與兩個整數的字符串:

std::istringstream src(temp); 
src >> int1 >> int2 >> std::ws; 
if (! src || src.get() != EOF) { 
    // Format error... 
} 

請注意,你可能要爲 "path"比較以及之前修剪空白。 (尾隨空格可能特別有害, ,因爲在普通編輯器中無法看到。)