C++ преобразование строки значения цвета в int
Я попытался преобразовать цветовой код, прочитав файл, получить цветовой код и сохранить его в виде строки. Это работает, но когда я попытался просто преобразовать его в int, он не работает - всегда получает 0, когда я делаю cout.
string value = "0xFFFFFF";
unsigned int colorValue = atoi(value.c_str());
cout << colorValue << endl;
Как вы можете видеть, цвет у меня есть 0xFFFFFF, но преобразование его в int даст мне только 0. Может ли кто-нибудь сказать мне, что я упускаю или делаю неправильно?
Спасибо
2 ответа:
Я предлагаю использовать stringstreams:
std::string value = "0xFFFFFF"; unsigned int colorValue; std::stringstream sstream; sstream << std::hex << value; sstream >> colorValue; cout << colorValue << endl;
Как говорит @BartekBanachewicz,
atoi()
не является способом C++ для этого. Используйте мощь потоков C++ и используйтеstd::istringstream
, чтобы сделать это за вас. Смотрите это.Отрывок:
template <typename DataType> DataType convertFromString(std::string MyString) { DataType retValue; std::stringstream stream; stream << std::hex << MyString; // Credit to @elusive :) stream >> retValue; return retValue; }