使用string将filename传递给fstream

时间:2012-10-26 11:18:54

标签: c++ string fstream

我使用以下方法读取txt文件

modelStream.open("file.txt", ios::in);
if (modelStream.fail())
    exit(1);
model = new Model(modelStream);

但我想知道如何将字符串作为参数传递

string STRING;
modelStream.open(STRING, ios::in);
if (modelStream.fail())
    exit(1);
model = new Model(modelStream);

有没有人知道这是否可行,如果是这样我会怎么做?

3 个答案:

答案 0 :(得分:2)

由于遗留原因,C ++ 03中的 iostreams 需要一个C风格的以null结尾的字符串作为参数,并且不理解std::string。幸运的是,std::string可以使用函数std::string::c_str()生成一个C风格的以null结尾的字符串:

modelStream.open(STRING.c_str(), ios::in);

这实际上是在C ++ 11中“修复”的,所以如果你使用它,你的原始代码就会起作用。

此外,不建议使用全大写变量名称;它们都不是名为“string”的变量。让名称描述意义。

答案 1 :(得分:0)

只需使用c_str ()

std::string方法即可

modelStream.open(STRING.c_str (), ios::in);

答案 2 :(得分:0)

标准流不接受标准字符串,只接受c-string!所以使用c_str()传递字符串:

modelStream.open(STRING.c_str(), ios::in);