【问题标题】:QT ofstream use variable as a path nameQT ofstream 使用变量作为路径名
【发布时间】:2016-11-12 23:36:17
【问题描述】:

我正在尝试制作一个采用 QString 和 int 的函数。 将 QString 变量转换为 ofstream 的文件名,然后将整数放入文件中。到目前为止,我已经设法获取一个常量文件名,例如“Filename.dat”并将一个变量写入其中。但是,当我尝试像这样使用 QString 时:

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

这是调用write()的函数;

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

当我使用“bin\dial.dat”而不是将“bin\”与字符串组合时,它可以正常工作。 ofstream.open();使用“const char*”。

我已经尝试了所有文件类型,所以它们可能与我的描述不符

问题是- 有人知道如何将“bin\”和 QString 结合起来并使其与 ofstream 一起使用吗? 我花了很多时间在谷歌上搜索它,但仍然无法让它工作。 谢谢! 任何建议都非常受欢迎

【问题讨论】:

  • 这个"bin\\" + what 不会做你想做的事。这不是字符串连接。
  • 嗯.. 在这种情况下,您知道如何连接这两个字符串并使其与 ofstream 一起使用吗?谢谢

标签: c++ qt function variables ofstream


【解决方案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();
}

【讨论】:

  • 谢谢!就像我想要的那样工作。设法对其进行了一些修改并添加了一个带有文件类型的额外字符串。看起来不是变量类型是问题。
  • 顺便说一句。您在询问 QStrings 并且您没有在代码中使用它们。如果你喜欢我的回答,也请投票 ;)
  • 我确实问过,过去一个月我一直在学习 cpp,现在我正在尽最大努力使用 QT,但到目前为止我都在努力失败。非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2020-03-31
  • 2022-12-17
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多