На этот вопрос уже есть ответ здесь:
следующий код генерирует ошибку
std::string xyz="whatever"; int x=1; xyz+=std::to_string(x); //this is supposed to turn xyz into whatever1 from whatever
Почему я использую этот подход? Потому что подготовленные операторы не работают с версией mysql на моем ubuntu (в этой версии mysql есть ошибка), и я пробовал и следил за всем, чтобы обновить mysql, но, увы! Итак, там, где я должен был это сделать
sql::preparedStatement* pstm=con->prepare_Statement("select x from y where a=?"); pstm->setString(1,"xyz");
, я получаю ошибку сегментации, ошибку дампа ядра, описанную выше. Это обычная ошибка с версией mySQL, которая есть у меня в UBUNTU.Попробовав все, что мог, для обновления mysql, я решил вообще не использовать подготовленные операторы. Вместо этого я решил задать такие вопросы, как
std::string query="select x from y where a="; int x=5; query+=std::to_string(x);
And KUDOS! Версия g ++ не поддерживает функции C ++ 11, поэтому to_string не является частью std. Я пробовал следующие команды
sudo apt-get update sudo apt-get upgrade g++
Пока не повезло. Любая помощь будет принята с благодарностью
PS, в настоящее время я использую этот подход для объединения целых чисел со строкой
sstream ss; {{1 }} ssНо я не хочу постоянно менять пути только потому, что я не могу обновить чертову функцию Ubuntu, это никому не нужно. Верно?
g ++ действительно поддерживает C++ 11, но это экспериментально, следовательно необходимо включить его с опцией -std=gnu++11
. Вы не должны обновлять g ++, Вы не можете, потому что Вы уже выполняете последнюю версию.
, Таким образом, Вы скомпилируете использование команды как
g++ -std=gnu++11 ./source_file.cpp
, можно также попробовать clang
компилятор, поскольку это имеет лучший C++ 11 поддержки, чем g ++. Для установки его работайте
sudo apt-get install clang-3.5
, Действительно читают Состояние Экспериментального C++ 11 Поддержки в GCC 4.8 и Поддержка C++ в Лязге .