【问题标题】:ofstream writing data to file: How do I pass a previously defined string as the filenameofstream 将数据写入文件:如何将先前定义的字符串作为文件名传递
【发布时间】:2013-02-08 04:08:57
【问题描述】:

我有一个用 C++、OpenCV 和 Qt 编写的程序,我正在尝试将数据写入 csv 文件。在我的 Qt 小部件中,我创建了一个 QFileDialog,它允许我选择保存 csv 文件的位置。

这个路径然后存储为一个QString,并转换为一个std::string如下;

std::string OutputFileName = OutputFile.toUtf8().constData();

然后我尝试将此 std::string 传递给我的 ofstream::open 函数,如下所示:

ofstream CSVFile;
CSVFile.open(OutputFileName);

问题就在这里;它拒绝编译,给出错误

没有匹配函数调用'std::basic_ofstream >::open(std::string&)'

我对编程很陌生,因此我不知道这里到底有什么问题。我试过查看this,但据我所知,这是一个特定于 Windows 的解决方案,而且我使用的是 OSX。

谁能告诉我如何成功地将存储在 QString 中的文件路径传递给 CSVFile.open() 术语?

【问题讨论】:

    标签: c++ string csv ofstream qstring


    【解决方案1】:

    在 C++03 中,ofstream::open 采用 const char* 参数。

    如果 OutputFileName 是 std::string。

    试试:

    CSVFile.open(OutputFileName.c_str());
    

    如果 outputFileName 是 Qstring

    CSVFile.open(OutputFileName.toStdString().c_str());
    

    参见QString::toStdString参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      相关资源
      最近更新 更多