我使用以下方法读取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);
有没有人知道这是否可行,如果是这样我会怎么做?
答案 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);