2012-03-29 63 views
0

我需要連接寫入函數中的參數。我將如何做到這一點?在C++中連接寫入參數

例子:ofstream write(newFolder concat "/newfile.txt");

mkdir(newFolder); 
ofstream write (wantTo "concat here"); 
write << "Sup mo fo"; 
write.close(); 
+1

'的std :: string'支持'+'經營者,你試試吧? – littleadv 2012-03-29 05:13:44

回答

1

如果newFolder是爲std :: string,你可以簡單地使用newFolder + "/newfile.txt"。但您必須確保newFolder不會以/\結束。如果在write函數中需要char *,則可能需要在std :: string上使用c_str()函數。

+0

將「std :: string」與「字符串字面量」或「C風格字符串」區分開來會很好。只有'std :: string'支持運算符'+'。 – 2012-03-29 14:00:26

+0

@Robᵩ你是對的;完成。 – 2012-03-30 18:18:42

0

雖然使用std::string是首選方法,但要小心,因爲舊版本的標準庫不支持採用std::string作爲參數的open方法。

如果您在使用時std::string得到調用open錯誤,那麼你必須做的兩個步驟:

std::string newFolder = "/path/to/folder"; 
mkdir(newFolder.c_str(), 0644); // The 'mkdir' function wants 'const char *' 

// Has to concatenate strings here if your standard library is too old 
std::string folderAndFile = newFilder + "/filename"; 

std::ofstream output(folderAndfile.c_str()); 
+0

你能解釋一下mkdir調用的'const char *'部分嗎? – Cjueden 2012-03-29 05:47:33

+0

@Cjueden系統調用'mkdir'是一箇舊的C函數,並不知道類似'std :: string'的C++類。如果你看看[mkdir']的手冊頁(http://linux.die.net/man/2/mkdir),你會發現path參數的類型是'const char *',它由[ '的std :: string :: c_str'](http://en.cppreference.com/w/cpp/string/basic_string/c_str)。 – 2012-03-29 05:51:39