【问题标题】:Reading from file line by line in c++(each line has one string and several int values)?在 C++ 中逐行读取文件(每行有一个字符串和几个 int 值)?
【发布时间】:2012-10-27 19:12:02
【问题描述】:

(每行整数个数相同,但未知)

所以我可能有这样的文件:

标题1 34 98 标题2 15 9 标题3 45 15

标题1 34 98 76 97 标题2 15 9 43 8 标题3 45 15 34 7

或者...

struct elem
{
  char d[50];
  int v[50];
};

我试过了,它可以编译但不起作用

char ch;
elem col[10];
int num,z=0;

//z-nr of lines, num -nr of int values in the line

ifstream myfile("t2.txt");
if (myfile.is_open())
{
    while (myfile.good())
{
      myfile>>col[z].d;
  num=0;
  myfile.get(ch);
  while(ch!='\n')
  {
        myfile>>col[z].v[num];
    myfile.get(ch);
    num++;
      }
  z++;
}
  myfile.close();
}

程序“挂起”(无响应状态)

【问题讨论】:

  • 在什么情况下不起作用?我可以看到你有一个潜在的缓冲区溢出,但我怀疑这不是你所说的......
  • C++: Read file line by line 的可能重复项

标签: c++ ifstream


【解决方案1】:

你可以试试这个:

string line;
ifstream myfile("t2.txt");

if (myfile.is_open()) {
    while (getline(myfile, line)) {
        istringstream iss(line);

        iss >> col[z].d;

        int x;
        num = 0;
        while (iss >> x) {
            col[z].v[num] = x;
            num++; 
        }

        z++;
    }
}

【讨论】:

  • 非常感谢,它确实有效,但是有这个问题:我正在做一个 MFC 应用程序项目(使用文本文件中的值作为输入),然后执行它就可以了,但是如果我调整输出窗口的大小,z(行的 nr 会随着每次调整大小而增加,所以它是 3,6,9...)
猜你喜欢
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
相关资源
最近更新 更多