C ++将颜色值String转换为int

时间:2013-03-31 18:47:28

标签: c++ colors int

我尝试通过读取文件来转换颜色代码,检索颜色代码并将其存储为字符串。这是有效的,但是当我试图将它简单地转换为int时,它不起作用 - 当我做cout时总是得到0。

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

正如你所看到的,我得到的颜色是0xFFFFFF,但将它转换为int只会给我0.有人可以告诉我我错过了什么或者我做错了什么?

由于

2 个答案:

答案 0 :(得分:2)

我建议使用stringstreams:

std::string value = "0xFFFFFF";
unsigned int colorValue;
std::stringstream sstream;
sstream << std::hex << value;
sstream >> colorValue;
cout << colorValue << endl;

答案 1 :(得分:0)

正如@BartekBanachewicz所说,atoi()不是C ++的做法。利用C ++流的强大功能,并使用std::istringstream为您完成。请参阅this

摘录:

template <typename DataType>
DataType convertFromString(std::string MyString)
{
    DataType retValue;
    std::stringstream stream;
    stream << std::hex << MyString; // Credit to @elusive :)
    stream >> retValue;
    return retValue;
}