2

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

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

如您所见,我得到的颜色是 0xFFFFFF,但将其转换为 int 只会给我 0。有人可以告诉我我缺少什么或我做错了什么吗?

谢谢

4

2 回答 2

2

我建议使用字符串流:

std::string value = "0xFFFFFF";
unsigned int colorValue;
std::stringstream sstream;
sstream << std::hex << value;
sstream >> colorValue;
cout << colorValue << endl;
于 2013-03-31T18:52:22.973 回答
0

正如@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;
}
于 2013-03-31T18:53:27.140 回答