ofstream将数据写入文件:如何将先前定义的字符串作为文件名传递

时间:2013-02-08 04:08:58

标签: c++ string csv ofstream qstring

我有一个用C ++,OpenCV和Qt编写的程序,我试图将数据写入csv文件。在我的Qt Widget中,我创建了一个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()术语?

1 个答案:

答案 0 :(得分: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参考