2012-11-11 87 views
0

我想要做的是數據,提示用戶輸入一個文件,將數據保存在什麼我曾嘗試是:提示用戶輸入一個文件保存在

string save; 
    cout<<"Enter filename to save (ex: file.txt): "; 
    cin>>save; 
    ofstream myfile; 
    myfile.open(save); 
    myfile <<"ID \tName \tSales\n"; 

但是我得到一個錯誤:對於呼叫沒有匹配功能「的std :: basic_ofstream> ::打開(的std :: string &)」

編輯:

,所以我有更新了我的代碼,但是這並不讓我輸入名稱的文件。這是爲什麼

char file_name[81]; 
    cout<<"Enter filename to save (ex: file.txt): "; 
fflush(stdin); 
    cin.getline(file_name, 81); 

回答

1

而不是

cin >> filename; 

的第一個標記後停止,你應該使用

getline(cin, filename); 

所以你可以用空格輸入文件名。

此外,考慮到使用的argv(也許有些庫選項解析)。

3

沒有構造函數或open功能服用std::string C++ 03:myfile.open(save.c_str());。但是,他們將它們添加到C++ 11中。

這是nice reference。請注意0​​版本旁邊的since C++11註釋。

1

構造函數是顯式的,並且期望變量的類型爲const char *,因此您必須傳遞save.c_str(),它會爲字符串對象返回一個const char *。

+0

你能幫助我弄清楚爲什麼現在我不能寫,我想在 –

+0

確定我得到了它,我把cin.ignore寫入文件的名稱() –

0

下面是一個簡單的程序,證明你想要做什麼:

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

int main() 
{ 
    string filename; 
    cout << "Enter filename to save (eg. file.txt): "; 
    cin >> filename; 

    ofstream myfile; 
    myfile.open(filename.c_str()); 
    myfile << "ID \tName\tSales" << endl; 
    myfile.close(); 

    return 0; 
}