2016-11-12 136 views
1

我正在嘗試使QString以及int的函數。 將QString變量轉換爲forstream的文件名,然後取整數並將其放入文件中。到目前爲止,我已經設法使用一個常量文件名,例如「Filename.dat」,並在其中寫入一個變量。然而,當我嘗試使用QString這樣的:QT ofstream使用變量作爲路徑名稱

void write(const char what,int a){ 
    std::ofstream writefile; 
    writefile.open("bin\\" + what); 
    writefile << a; 
    writefile.close(); 
} 

我得到一個錯誤

void write(const char,int)': cannot convert argument 1 from 'const char [5]' to 'const char 

這是調用寫函數();

void Server::on_dial_valueChanged(int value) 
{ 
    write("dial.dat",value); 
} 

當我使用「bin \ dial.dat」而不是將「bin \」與一個字符串結合時,它工作正常。 ofstream.open();使用「const char *」。

我已經嘗試了所有的fileTypes所以他們可能不是我的描述

的問題是 - 匹配 沒有任何人有一個想法如何結合的「bin \」和爲QString,並使其與ofstream的工作? 我花了很多時間搜索它,但仍然無法使它工作。 謝謝! 任何建議,非常歡迎

+0

這' 「斌\\」 + what'不會做你的事做。這不是字符串連接。 – Logman

+0

那麼..在這種情況下,你知道如何連接這兩個字符串,並使它們與ofstream一起工作嗎?謝謝 –

回答

1

void write(const char what,int a)是錯了,因爲你只傳遞一個字符的功能,你應該有void write(const char* what,int a)傳遞指針爲c_string開始。

你也想要連接兩個cstrings,而在C++中你不能像在其他語言中那樣做,但是你可以使用std :: string來做你想做的事情。

試試這個

#include <string> 

void write(const char* what,int a){ 
    std::ofstream writefile; 
    std::string fileName("bin\\"); 
    fileName+=what; 
    writefile.open(fileName.c_str()); 
    writefile << a; 
    writefile.close(); 
} 
+0

謝謝!就像我想要的那樣工作。管理修改它一點點,並添加一個額外的字符串與文件類型。看起來不是變量類型是問題。 –

+0

順便說一句。你問的是QStrings,而你並沒有在你的代碼中使用它們。如果你喜歡我的回答,也請投票;) – Logman

+0

我曾問過,過去一個月我一直在學習cpp,現在我正在用QT嘗試我的最佳狀態,到目前爲止我都很努力。非常感謝你的幫助 –