0

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

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

  }


}
4

3 回答 3

2
int a, b;
stringstream ss(temp);
ss >> a >> b;
于 2012-09-04T09:40:13.643 回答
1

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

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

请注意,您可能还想在比较 for 之前修剪空白 "path"。(尾随空格可能特别有害,因为它在普通编辑器中看不到。)

于 2012-09-04T09:58:32.930 回答
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";
}
于 2012-09-04T09:39:36.810 回答