2013-12-19 71 views
0

我希望用戶要做的是在testquote中輸入文件名,然後爲我的程序在最後添加.txt以將文件保存爲.txt,這樣我就可以將多個引號保存到計算機中而不會寫入。這是我到目前爲止有:保存txt文件作爲變量的名稱

cout << "What would you like to save the quotation as? (Maybe using your last name) " << endl; 
    cin >> nameOfFile; 

    ofstream outfile; // Opens file in write mode 
    outfile.open(nameOfFile)<<(".txt"); // Opens the quotations file 
    //Lawn 
    outfile << "The total lawn area is " << lawnArea << " square meters" << endl; // Writes users data into the file 
    outfile << "The total cost for the lawn is £" << (lawnArea * lawnCost) << endl; // Writes users data into the file 
+0

你有什麼問題? – khajvah

+0

'nameOfFile'是一個'std :: string'嗎? –

+4

'outfile.open(nameOfFile)<<(「。txt」); //打開引用文件'不,它絕對不會!首先構造字符串(例如使用'+'運算符),然後用構造的字符串打開文件。 –

回答

5

假設nameOfFilestd::string,你可以使用std::string::operator+".txt"來連接它:

ofstream outfile(nameOfFile + ".txt"); 

(注:有沒有必要打電話open - 只是通過文件名給構造函數)

+0

謝謝你,工作完美,謝謝你的額外細節,非常感謝!儘可能接受答案 – user3120369

0
outfile.open(nameOfFile)<<(".txt"); // Opens the quotations file 

這行代碼簡直是錯的。您似乎將operator<<std::ofstream類的使用相混淆。

你想要的是一個std::string變量,其中包含要打開的文件的名稱。附加.txt擴展應該自動完成,對吧?

所以首先有一個變量來接收用戶的文件名選擇(不.txt):

std::string nameOfFile; 

// ... 
cin >> nameOfFile; 

然後附加一個.txt

nameOfFile += ".txt"; 

然後構建一個std::ofstream這個字符串:

std::ofstream outfile(nameOfFile.c_str());