我尝试通过读取文件来转换颜色代码,检索颜色代码并将其存储为字符串。这是有效的,但是当我试图将它简单地转换为int时,它不起作用 - 当我做cout时总是得到0。
string value = "0xFFFFFF";
unsigned int colorValue = atoi(value.c_str());
cout << colorValue << endl;
正如你所看到的,我得到的颜色是0xFFFFFF,但将它转换为int只会给我0.有人可以告诉我我错过了什么或者我做错了什么?
由于
答案 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;
}