Подтвердить что ты не робот

"to_string" не является членом "std"?

Хорошо, поэтому я

tmp.cpp:

#include <string>

int main()
{
    std::to_string(0);
    return 0;
}

Но когда я пытаюсь скомпилировать, я получаю:

$ g++ tmp.cpp -o tmp
tmp.cpp: In function ‘int main()’:
tmp.cpp:5:5: error: ‘to_string’ is not a member of ‘std’
     std::to_string(0);
     ^

Я запускаю g++ версию 4.8.1. В отличие от всех других ссылок на эту ошибку, которые я обнаружил там, я не использую MinGW, я на Linux (3.11.2).

Любые идеи, почему это происходит? Является ли это стандартным поведением, и я сделал что-то неправильно или где-то есть ошибка?

4b9b3361

Ответ 1

вы можете указать версию С++ с помощью

g++ -std=c++11 tmp.cpp -o tmp

У меня нет gcc 4.8.1 под рукой, но в более старых версиях GCC, вы можете использовать

g++ -std=c++0x tmp.cpp -o tmp

По крайней мере, gcc 4.9.2 Я считаю, что также поддерживает часть С++ 14, указав

g++ -std=c++1y tmp.cpp -o tmp

Обновление: gcc 5.3.0 (я использую версию cygwin) теперь поддерживает -std=c++14 и -std=c++17.

Ответ 2

to_string работает с последними версиями С++, такими как версия 11. Для более старых версий вы можете попробовать использовать эту функцию

template <typename T>
string ToString(T val)
{
    stringstream stream;
    stream << val;
    return stream.str();
}

Добавив шаблон, вы также можете использовать любой тип данных. Здесь вы должны включить #include<sstream>.

Ответ 3

Первоначально я предполагал, что это ограничение для MinGw-компилятора DevС++. Но небольшое изменение в компиляторе Options>Settings>Code Generation>Language standard> установило его на ISO C++ 11.

Тогда он должен работать.