У меня странное поведение с std :: atof в Ubuntu 18.0.4 с Qt Creator (4.10) в качестве IDE / g cc 7.4.0:
Он анализирует строки как обычно, когда я запустить в режиме отладки из QtCreator. Но он работает нормально, когда я бегу.
Пример кода с таким поведением:
std::string exampleStr = "3.0303";
std::cout << "string value: " << exampleStr << std::endl;
std::cout << "double value - c_str(): " << std::atof(exampleStr.c_str()) << std::endl;
Вывод с нормальным запуском из IDE:
строковое значение: 3.0303
двойное значение - c_str (): 3
Вывод с запуском непосредственно из исполняемого файла:
строковое значение: 3.0303
двойное значение - c_str (): 3
Вывод в режиме отладки:
строковое значение: 3.0303
двойное значение - c_str (): 3.0303
Я пробовал и std :: stof, и std :: strtof. Оба одинаковые. Кто-нибудь знает причину или обойти эту ошибку?
Редактировать: Я обошел это, но все еще удивляюсь, почему это происходит.
std::string exampleStr = "3.0303";
std::stringstream ss;
ss << exampleStr;
float val = 0;
ss >> val;
std::cout << "Float value: " << val << std::endl;