我的代码:
#include <iostream>
#include <string>
int main()
{
std::string test = "45";
int myint = std::stoi(test);
std::cout << myint << '\n';
}
出现编译错误:
error: 'stoi' is not a member of 'std'
int myint = std::stoi(test);
^
然而,根据这里的说法,这段代码应该能够正常编译。我将CMakeLists.txt
文件中的set(CMAKE_CXX_FLAGS "-std=c++11 -O3")
这一行添加到了代码中。
为什么它还是不能编译?
更新:我正在使用gcc
,运行gcc --version
的输出结果为:
gcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
gcc
是C编译器,而不是C++编译器。g++
是C++编译器,因此您应该确保使用正确的编译器进行编译。 - CinchBluegcc
可以根据文件扩展名编译 C++,但它不会处理链接标准库的问题,而g++
包装器则会。 - Nick Matteo