Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ fstream在Qt Creator中不起作用_C++_Qt_Fstream_Ifstream_Ostream - Fatal编程技术网

C++ fstream在Qt Creator中不起作用

C++ fstream在Qt Creator中不起作用,c++,qt,fstream,ifstream,ostream,C++,Qt,Fstream,Ifstream,Ostream,我是新来的。我的项目在Visual C++ 2010 Express版中编码,完全可以。然后,我想使用我已经在Qt控制台应用程序中创建的.cpp文件,类似于我在VC++2010中的项目。在ofstream和ifstream处编译失败,出现以下错误: "no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(std::basic_strinstream<char>::_strin

我是新来的。我的项目在Visual C++ 2010 Express版中编码,完全可以。然后,我想使用我已经在Qt控制台应用程序中创建的.cpp文件,类似于我在VC++2010中的项目。在ofstream和ifstream处编译失败,出现以下错误:

"no matching function for call to 'std::basic_ofstream<char>::basic_ofstream(std::basic_strinstream<char>::_string_type)'"
"no matching function for call to 'std::basic_ifstream<char>::basic_ofstream(std::string&)'"
我已将fstream作为以下内容包含在cpp文件中:

#include <QCoreApplication>
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <sstream>

using namespace std;
失败的代码如下:

stringstream s1; s1 << "Estimated_NN_ThrMWh.csv";
ofstream outF1(s1.str());

顺便说一下,我使用mingw4.9.1 32位作为编译器。问题是什么?如何解决?感谢您的帮助。

您应该始终按照以下方式书写:

string s = s1.str();
ofstream outF1(s);
而且,在我看来,您在MSVC下工作的代码应该被视为MSVC的一个bug,它允许非常量引用绑定到临时对象。

您正在将一个std::string传递给std::ofstream构造函数。这是,要使用它,您需要将-std=c++11传递给GCC或Clang。MSVC会自动编译其混合的not-quite-C++11或编译器版本编译的任何其他语言

如果您使用的是Qt5的qmake,那么只需执行CONFIG+=c++11即可。否则你需要像这样的东西

*gcc*:QMAKE_CXXFLAGS += -std=c++11
如果您不想依赖C++11,请不要使用它,只需执行以下操作:

std::string filename("Estimated_NN_ThrMWh.csv");
std::ofstream outF1(filename.c_str());

这将永远有效。注意,我删除了stringstream,因为至少在您显示的简短代码中,它是多余的。

您需要流outp1s1.str.cstr;谢谢你的及时回复。但是,当我在VC++2010中编译时,同样的代码可以很好地工作。我想知道为什么它不能在Qt中工作。@ SyydAlaluMulouavi我的项目在Visual C++ 2010 Express版中编码,它完全可以工作。那么为什么不继续在Qt中使用MSVC编译器呢?@Tay2510:如何在Qt中添加MSVC编译器?@seyyedalipourmousavi Qt Creator->工具->选项->编译器。您应该能够看到MSVC编译器自动检测,如果您有它,否则您将不得不手动添加一个。请参阅:您希望filename.c_str在那里。@retiredInja Right-o。修正。谢谢你的回答。实际上,我使用stringstream是因为我根据原始代码中模拟的一些参数修改了文件名。例如,它可以是这样的:stringstream s1;s1但我给出的两个语句等于您使用的格式错误的stream outp1s1.str语句;是吗?是的,它在MingW4.9.1编译器下不工作。我把编译器改成了MSVC2010,它在原来的格式下运行得很好。我不知道。它在我的环境下编译得很好。gcc版本4.8.2 i686-posix-dwarf-rev3,由MinGW-W64项目构建