c – 使用string将filename传递给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);

有谁知道这是否可能,如果是这样我会怎么做?

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

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

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

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

https://stackoverflow.com/questions/13085949/using-string-to-pass-filename-to-fstream

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 使用string将filename传递给fstream