2016-11-12 7 views
1

Я пытаюсь сделать функцию, которая принимает QString, а также int. Преобразуйте переменную QString в имя файла для потока, затем возьмите целое число и поместите его в файл. До сих пор мне удалось взять постоянное имя файла, например «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 

Это функция, которая вызывает запись();

Когда я использую «bin \ dial.dat» вместо объединения «bin \» со строкой, он отлично работает. ofstream.open(); использует «const char *».

Я пробовал все типы файлов, так что они могут не соответствовать моему описанию

Вопрос IS-ли кто-нибудь представление о том, как совместить «Bin \» и QString и заставить его работать с ofstream ? Я потратил много времени на поиски, но все равно не могу заставить его работать. Спасибо! Любые предложения более чем приветствуются

+0

Этот ' "бен \\" + не будет какое' делать то, что вы, что его делать. Это не строковое соединение. – Logman

+0

Ну .. В этом случае вы знаете, как соединить эти две строки и заставить их работать с потоком? Спасибо –

ответ

1

void write(const char what,int a) ошибочно, поскольку вы передаете только один символ для работы, вы должны иметь void write(const char* what,int a), чтобы передать указатель на начало cstring.

Вы также хотите конкатцировать две 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, и до сих пор я терпеть неудачу. Цените свою помощь много –