C++ преобразование строки значения цвета в int


Я попытался преобразовать цветовой код, прочитав файл, получить цветовой код и сохранить его в виде строки. Это работает, но когда я попытался просто преобразовать его в int, он не работает - всегда получает 0, когда я делаю cout.

string value = "0xFFFFFF";
unsigned int colorValue = atoi(value.c_str());
cout << colorValue << endl;

Как вы можете видеть, цвет у меня есть 0xFFFFFF, но преобразование его в int даст мне только 0. Может ли кто-нибудь сказать мне, что я упускаю или делаю неправильно?

Спасибо

2 2

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;
}