2016-11-12 96 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尝试我的最佳状态,到目前为止我都很努力。非常感谢你的帮助 –