如何升级我的 g++,C++11 功能不起作用

如何升级我的 g++,C++11 功能不起作用

以下代码会产生错误

std::string xyz="无论如何";
int x=1;
xyz+=std::to_string(x);
//这是为了将 xyz 从 whatever 变成 whatever1

我为什么要使用这种方法?因为准备好的语句不适用于我的 ubuntu 上的 mysql 版本(这个 mysql 版本有一个错误),并且我已经尝试并按照所有方法升级 mysql,但是唉!那么,我应该在哪里这样做

sql::preparedStatement* pstm=con->prepare_Statement("从 y 中选择 x,其中 a=?");
pstm->设置字符串(1,“xyz”);

我遇到了分段错误,上面出现了核心转储错误。这是我在 UBUNTU 中安装的 mySQL 版本中常见的错误。在尝试了所有升级 mysql 的方法后,我决定完全不使用准备好的语句。相反,我决定进行如下查询

std::string query="从 y 中选择 x 其中 a=";
int x=5;
查询 + = std::to_string (x);

太棒了!g++ 版本不支持 C++11 功能,因此 to_string 不是 std 的一部分。我尝试了以下命令

sudo apt-get 更新
sudo apt-get 升级 g++

还没有运气。任何帮助都将不胜感激

PS,目前,我使用这种方法将整数与字符串连接起来

流 ss;ss

但是,我不想仅仅因为无法更新 Ubuntu 的一个功能而不断切换,没人愿意这样。对吧?

答案1

g++ 确实支持 c++11,但它是实验性的,因此您必须使用选项启用它-std=gnu++11。您不需要升级 g++,因为您已经在运行最新版本。

因此,你可以使用如下命令进行编译

g++ -std=gnu++11 ./source_file.cpp

您也可以尝试clang编译器,因为它比 g++ 对 c++11 的支持更好。要安装它,请运行

sudo apt-get install clang-3.5

请阅读GCC 4.8 中实验性 C++11 支持的状态Clang 中的 C++ 支持

相关内容