我有一段代码如下所示.让我们说它在一个名为的文件中example.cpp
#include <fstream>
#include <string> // line added after edit for clarity
int main() {
std::string filename = "input.txt";
std::ifstream in(filename);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在Windows上,如果我输入cmd命令g++ example.cpp,它将失败.这是一个很长的错误列表,我认为主要是由于链接器抱怨无法转换string为const char*.
但是如果我使用像这样的附加参数运行编译器:g++ -std=c++17 example.cpp它将编译并正常工作而没有任何问题.
当我运行前命令时会发生什么?我猜测C++编译器的默认版本标准被调用,但我不知道哪个?作为程序员/开发人员,我应该总是使用后一个命令和额外的参数吗?
我面临文件系统库的问题,它应该包含在c ++ 17编译器中,2天后我试图在raspberry pi中安装gcc-7.0.2但是它没有用,它无法识别命令gcc-7或g ++ - 7甚至-std=c++17所以我必须安装g ++ - 6和gcc-6 apt-get install
,在安装6版之后,编译器包含c ++ 17.我使用代码块作为IDE,我不得不添加一个新的编译器并添加选项-std = c ++ 17来启用它,但在主代码中,当我包含文件系统库时,它没有说这样的文件或目录.
我的问题是,如何才能正确添加c ++ 17编译器及其库(如文件系统)?