2

我正在使用以下方法读取一个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);

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

4

3 回答 3

2

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

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

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

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

于 2012-10-26T11:20:45.177 回答
0

简单c_str ()的使用方法std::string

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

于 2012-10-26T11:20:59.810 回答
0

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

modelStream.open(STRING.c_str(), ios::in);
于 2012-10-26T11:38:30.340 回答