在linux中使用c_str()无法打开文件

时间:2013-11-26 14:26:17

标签: c++ linux file fstream

在Windows上,我从字符串打开文件没有问题。在Linux上(它需要工作)我无法打开文件。

    string name;

//open 1st file, with the next file name - this works
fstream file( "data.dat", ios::in);

if(file.good()){
    getline(file, name);

            //some code here

    file.close();
}else{
    return 1;
}


    // this here does not work
fstream file1(name.c_str() , ios::in);
if(file1.good()){

    //some code here

    file1.close();
}else{
    cout<<"can't open file"<<endl;
    return 1;
}

如果相反name.c_str()我直接写了文件名就可以了,但每次尝试从文件中获取名称都会以文件未打开的方式结束。

我尝试过从名称创建const char *,也不行。

1 个答案:

答案 0 :(得分:2)

该文件可能有Windows-style line endings。清理文件,或检查并删除每行末尾的任何回车字符\r