У меня есть фрагмент кода, который выглядит следующим образом. Скажем, в файле с именем 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;
}
В окне, если я наберу cmd
команду g++ example.cpp
, она завершится с ошибкой. Это длинный список ошибок, которые я думаю в основном из-за того, что компоновщик жалуется на невозможность конвертировать из string
в const char*
.
Но если я запустил компилятор, используя следующий аргумент: g++ -std=c++17 example.cpp
, он будет компилироваться и работать нормально, без проблем.
Что происходит, когда я запускаю прежнюю команду? Я предполагаю, что стандартная версия version компилятора С++ вызывается, но я не знаю, что? И как программист/разработчик, должен ли я всегда использовать последнюю команду с дополнительным аргументом?