2015-10-06 22 views
0

的基本語法我用寫一個.txt文件是這樣的:寫在用戶定義的.txt文件

ofstream myfile; 
myfile.open ("data.txt", ios::trunc); 
outfile<<"writing"; 

現在,假設我是讓用戶決定哪些文件應該被訪問,它可以通過一個字符串來完成嗎?

#include <iostream> 
#include <fstream> 
using namespace std; 
int main(){ 
    ofstream myfile; 
    string filename; 
    char x; 
    cin>>x; 
    if (x==1) 
     filename="data2.txt"; 
    myfile.open (filename, ios::trunc); 
    myfile<<"writing"; 
    return 0; 
} 

我已經測試過了,它沒有工作。我的問題是:是否有可能做這樣的事情?如果是,如何?當我編譯它,我得到的錯誤是:

undefined reference to 'std::basicofstream<char, std::char_traits<char> >::open(std::string const&, std::_Ios_Openmode)' 

我不明白是什麼導致它。

+2

指定「沒有工作」。沒有編譯?如果是這樣,請發佈錯誤。沒有鏈接?如果是這樣,請發佈錯誤。沒有按預期行事?如果是這樣,發佈預期和觀察行爲。 – Angew

+0

你說得對,我很抱歉。我編輯它,還包括整個代碼。 –

+0

什麼是完整的錯誤信息? – melpomene

回答

2

您的錯誤表示無法找到使用std::stringopen方法。

試試這個:

myfile.open(filename.c_str(), ios::trunc); 

C++的某些版本不允許std::stringopen方法,所以你將不得不使用的std::stringc_str()方法。

+0

我現在可以編譯它,但由於某些原因,.txt文件仍爲空。你知道是什麼原因造成的嗎? –

+0

我建議使用*調試器*來了解代碼的執行方式。 –

+0

我能解決它:)。感謝您的見解。 –

1

您應該添加一個else分支,因爲如果x不等於1open什麼也沒有打開。

此外,您忘記在第二個片段中聲明ofstream myfile;。也許這就是這不起作用的原因(它甚至不應該編譯)。

+0

對不起,我只包含一段代碼,現在已完成 –