2012-10-26 35 views
2

我使用下面的方法來讀取TXT文件使用字符串來傳遞文件名的fstream

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

有沒有人知道這是可能的,如果是我該怎麼做?

回答

2

由於遺留原因,iostreams在C++ 03期望C風格,以null結尾的字符串作爲參數,並不理解std::string。幸運的是,std::string可以生產C型,空值終止字符串,該函數std::string::c_str()

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

在C++ 11這實際上是「固定」的,所以如果你使用它的原代碼是功能。

此外,不推薦使用全大寫變量名;既不是名爲「字符串」的變量。使名稱描述含義。

0

只需使用的std::string

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

0

標準流c_str()方法不接受一個標準的字符串,只有c-串!因此,使用c_str()傳遞字符串:

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