c++ - 使用字符串将文件名传递给 fstream

标签 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);

有谁知道这是否可能,如果是的话我该怎么做?

最佳答案

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

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

这实际上在 C++11 中已“修复”,因此如果您使用它,您的原始代码将可以正常工作。

此外,不建议使用全大写的变量名;也不是称为“字符串”的变量。让名称描述含义。

关于c++ - 使用字符串将文件名传递给 fstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13085949/

相关文章:

c# - 如何用反斜杠替换正斜杠

python 字符串替换错误地删除了空格

c - 如何在c中 "clear"数组为较小的数组腾出空间?

c++ - fstream 指针未指向

c++ - 如何在 C++ 中读取不断增长的文本文件?

c++ - 为什么 GDI+ 颜色会根据工具提示是否可见而变化?

c++ - winsock select() 函数返回 0

c++:在main方法中运行一个函数

c++ - 多次交换文件中的字符

c++ - 如何解决 cin.fail() 中的循环