2014-04-01 21 views
0

好的程序使一個文件夾後,我會騙人把文件放在該文件夾,但我希望該文件是一個用戶將放入的名稱,所以如何我這樣做是因爲我現在已經設置了它所做的只是通過名稱Exampleuser輸入創建一個文件,並且將「/ two」放在兩個文件名之後。如何使文件有一個名稱,用戶輸入

#include <iostream> 
#include <direct.h> 
#include <string> 
#include <fstream> 

using namespace std; 

string newFolder = "Example"; 
string test ; 
string two; 


int main() 
{ 

    _mkdir((newFolder.c_str())); 

    getline(cin,test); 
    two = test; 


    fstream inout; 
    inout.open(newFolder + two,ios::out); 
    inout << " This is a test"; 
    inout.close(); 


    return 0; 
} 
+0

是什麼操作系統? – jsantander

+0

您可能需要文件夾名稱和文件名稱之間的分隔符。例如,在Linux上它將是:'new_folder +「/」+ two'。 –

+0

好吧,謝謝「\\」爲我工作,因爲即時消息在windows上 –

回答

2

C的舊的標準++要求你傳遞一個const char*參數爲std::fstream::open()方法。你可以只寫

inout.open(std::string(newFolder + "/" + two).c_str(),ios::out); 

或Windows文件系統

inout.open(std::string(newFolder + "\\" + two).c_str(),ios::out); 
+0

爲什麼你必須構造一個臨時字符串?只要做:'(newFolder +「/」+ two).c_str()' – 0x499602D2

+0

@ 0x499602D2我不知道它可以用括號'()'完成,THX。儘管如此,它可能會給OP提供更好的線索。 –

+0

根據我的經驗,可以在調用Win API(C++實現最終在Windows上歸結)中使用'/',並將其作爲路徑分隔符來接受。不知道這是否得到普遍保證。 –

1
#include <iostream> 
#include <fstream> 
#include <string> 
. 
. 
string filename; 
cin >> filename; 
string path; // the path to newfolder = "Example" 
path += filename; //append filename to the path, which in your case you should append "\\" between path and filename as well. 

ofstream ofs(path); // create the file 
. 
. 
ofs.close(); 
+0

你的「答案」添加了哪些(基本的)信息(代碼只有答案不是這裏所需的樣式)?請解釋您的代碼更改及其相對於當前問題答案的優勢。 –

+0

你說得對解決方案是正確的,但我認爲提出問題或需要這種解決方案的人會理解這是如何工作的!一個新的答案不一定會給現有的文章增加一些內容,它可以成爲某些人可能更清楚的問題的替代方式。 –

+0

_'...它可以是一種替代方法...'_當然是,但不僅僅是代碼。正如我所提到的,添加一些解釋。 –

相關問題