Я получаю данные от MySQL и пытаюсь поиграть с ним. Полученные данные находятся в m_caracs
, а затем я пытаюсь разрезать каждую часть этого потока в другом float
.Boost :: Преобразование Lexical_cast в float изменяет данные
Давайте посмотрим код:
#include <boost/algorithm/string.hpp>
#include <boost/lexical_cast.hpp>
#include <iostream>
#include <vector>
#include <string>
std::string m_sten;
std::string m_feal;
std::string m_felt;
std::string m_inte;
std::string m_sag;
std::string m_ende;
std::string m_asko;
std::string m_vit;
void test(bool mon)
{
std::string m_caracs = "f21.0i51.24v58.65c47.3s5.54d57.68e54.23h24.42";
if (mon == 0)
{
std::vector<std::string> charmps;
boost::split(charmps, m_caracs, boost::is_any_of("fivcsdeh"));
m_sten = boost::lexical_cast<float>(charmps[1]);
m_feal = boost::lexical_cast<float>(charmps[2]);
m_felt = boost::lexical_cast<float>(charmps[3]);
m_inte = boost::lexical_cast<float>(charmps[4]);
m_sag = boost::lexical_cast<float>(charmps[5]);
m_ende = boost::lexical_cast<float>(charmps[6]);
m_asko = boost::lexical_cast<float>(charmps[7]);
m_vit = boost::lexical_cast<float>(charmps[8]);
std::cout << m_caracs << std::endl;
}
else
{
std::cout << m_caracs << std::endl;
m_caracs = "f" + boost::lexical_cast<std::string>(m_sten) +
"i" + boost::lexical_cast<std::string>(m_feal) +
"v" + boost::lexical_cast<std::string>(m_felt) +
"c" + boost::lexical_cast<std::string>(m_inte) +
"s" + boost::lexical_cast<std::string>(m_sag) +
"d" + boost::lexical_cast<std::string>(m_ende) +
"e" + boost::lexical_cast<std::string>(m_asko) +
"h" + boost::lexical_cast<std::string>(m_vit);
std::cout << m_caracs << std::endl;
}
}
int main()
{
test(1);
test(0);
}
Вы можете видеть, что f21.0i51.24v58.65c47.3s5.54d57.68e54.23h24.42
f21.0i51.24v58.65c47.3s5.54d57.68e54.23h24.42
становится. Это именно то, чего я хочу. Проблема заключается в том, что у меня есть:
Я не знаю, откуда приходит. Единственное изменение заключается в том, что m_caracs
- это поток, полученный из базы данных. Это проблема конверсии?
Я думаю, что ваш globals 'm_ *' должно быть 'floats' (и вы хотели вызвать' test (0) 'before' test (1) ') – sehe
Oups, забыл редактировать, они извините. Сейчас я читаю ваш код. Благодарю вас. – Marion