尝试在c ++中打开多个文件时出错

时间:2013-09-13 21:20:30

标签: c++ file vector

我正在尝试打开多个文件来编译其中的数据。我的程序编译,但当我运行它时,我得到以下错误:

  

在抛出'std :: bad_alloc'的实例后终止调用    what():std :: bad_alloc   中止

到目前为止,我的程序非常冗长,所以我只会链接打开文件的部分内容。

int main(int argc,char *argv[])
{
vector<Plays> yearsEntered;

Plays *MyPlays = new Plays();
if (argc < 2) 
{
    cout << "No filenames given." << endl;
    return 0;
}

for(int i=1;i < argc; ++i)
{

    string filename = argv[i];

    cout << filename << endl;

    filename.append(".csv");

    cout << filename << endl;

    ifstream inputFile(filename.c_str(), ios::in);


    inputFile.open(filename.c_str());

    //Error checking in case file fails to open
    if (!inputFile)
    {
        cout << "Could not open file. " <<
         "Try entering another file." << endl;
    }
}

我不太清楚为什么我会收到错误但是如果我不得不猜测我说它与argv [i]是一个* char数组并且我正在设置它的事实有关等于一个字符串。此外,当我运行该程序时,它运行如下:./Analyze 2009 2010(etc)。当我运行它时,它将打印出我想要打开的文件的名称,所以我知道问题是它何时尝试打开文件本身。这是我第一次提出问题,所以如果有任何我没有遵循的约定,请告诉我,我会尽力解决。

1 个答案:

答案 0 :(得分:1)

您已经打开了一次文件。您无需再次打开它们。

std::ifstream构造函数打开每个文件,然后无缘无故地调用.open()。删除inputFile.open()行。

改变这个:

ifstream inputFile(filename.c_str(), ios::in);

inputFile.open(filename.c_str());

对此:

ifstream inputFile(filename.c_str());