文本文件解析C ++ |由空白分隔。

时间:2012-09-04 09:35:13

标签: c++ parsing text

我有一个像这样的文本文件

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个数字解析成两个不同的整数变量。到目前为止我的代码是。

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.
          }

  }


}

3 个答案:

答案 0 :(得分:2)

int a, b;
stringstream ss(temp);
ss >> a >> b;

答案 1 :(得分: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";
}

答案 2 :(得分:1)

给定一个包含两个整数的字符串:

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

请注意,您可能希望在比较之前修剪空格 "path"也是如此。 (尾随空格可能特别有害, 因为它无法在普通编辑器中看到。)