因getline而挂程序

时间:2012-11-18 02:26:16

标签: c++ file-io getline

我正在读取文件中的输入。我知道它的格式。所以我想从文件中读取输入并存储它。我试图使用getline读取最后一行,但程序只是挂起。这是我的输入文件数据:

6
1 2 2 -4 45 32
123 4234 -234 34534 54 2344
1 2 2 3 4 -234
2 3 -4 -4 4 234
1 11 123 1234 -12334563 2342
2 -234 -23 23 4322 2342
op 2

输入文件中的第一个值表示方阵具有的行数/列数。然后你就有了方阵。最后,您有一个操作代码。

这是我的代码:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstdlib>

using namespace std;

int main()
{
    int i,j,matlim;
    int num;
    string matrixlimit;
    string inputfile;
    string operation;
    ifstream data;
    vector< vector<int> > mat1storage,mat2storage;

    cout<<"Please enter an input file name: ";
    cin>>inputfile;    

    data.open(inputfile.c_str());
    if(data.is_open())
    {
    data >> matlim;
    while(!data.eof())
    {
        for(i = 0;i<matlim;i++)
        {
            vector<int> mat1row;
            for (j = 0;j<matlim;j++)
            {
                data >> num;
                mat1row.push_back(num);
            }
            mat1storage.push_back(mat1row);
        }

        getline(data,operation);
        cout << operation;

    }
 }
 data.close();
}

当我在循环中执行简单的“数据&gt;&gt;操作”以从文件中读取该最后一行时,程序正常运行。但是当我尝试使用getline时它不起作用......我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

Getline读取数据并存储到字符串中,直到找到删除字符。

  

取消字符为\n

op 2之后的文本文件中插入一个空白换行符,它应该可以正常工作