2016-03-01 2 views
1

Я не могу скомпилировать следующий кодстанд :: Stod не является членом станд

auto test = 42.02; 
double right = std::stod(stck.top()); 

Я использую Code :: Blocks и активировал опцию сборки следовать C++ 11 стандарта. Компилятор не жалуется на автоматическую декларацию и компилирует, когда я помещаю строку ниже в комментарии.

Я включил заголовок строки. Я не использую пространство имен.

Я понятия не имею, почему это не компилируется. Пожалуйста, помогите мне! редактирование: Мой компилятор Стандартный MinGW GCC 4.9

Из соображений простоты, я попытался следующие: скомпилирован с -std = C++ 11

#include <string> 

int main(){ 
    double pi = std::stod("3.14"); 
    return 0; 
} 

Я получаю следующее сообщение об ошибке:

error: stod не является членом std.

+2

Укажите ** полный **, но минимальный пример, не просто опишите его. Также укажите свой компилятор и версию. Тем не менее, вам, вероятно, просто нужно обновить свой компилятор. –

+3

Что такое 'stck'? Пожалуйста, предоставьте [mcve]. – 5gon12eder

+1

Возможно, ваша стандартная библиотека компилятора не обновлена ​​для C++ 11? – nneonneo

ответ

0

Похоже, вы, скорее всего, опечатка std::strtod()

Вам также нужно

#include <cstdlib> 
+0

кажется не http://www.cplusplus.com/reference/string/stod/ – pm100

+0

О, хорошая точка. В этом случае возможно, что компилятор не в режиме C++ 11, и в этом случае использование старой стандартной функции все равно будет работать :-) –

+1

** - 1 ** «Похоже, что вы, скорее всего, ошибочно указали std :: strtod" , no. Кроме того, отмечая попутно, что там, где вам действительно нужен 'strtod', в том числе' 'менее хлопотно, чем' '.Но этот последний момент немного субъективен: некоторые люди вкладывают много веса в появление C++-ish и утверждают, что '' - это C++-путь (это глупо, но они это делают). –

1

std::stod доступна, только если вы по крайней мере, с помощью std=c++11 для компиляции. Поэтому при компиляции просто добавьте флаг -std=c++11, и вы сможете использовать stod

+0

Было упомянуто несколько раз, что я использовал этот флаг. – infinitezero

+0

Похоже, вы должны сослаться на ссылку, которую опубликовали Cheers и hth. Для вашего компилятора может понадобиться патч, чтобы вы могли использовать std. – NickLamp

+0

Уже сделал, как указано в комментариях. Но спасибо за то, что вы указали это снова, помогут другим :-) – infinitezero

Смежные вопросы