2

ファイルを読み取ってカラーコードを変換し、カラーコードを取得して文字列として保存しようとしました。これは機能しますが、単純に int に変換しようとすると機能しません。cout を実行すると常に 0 になります。

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

ご覧のとおり、取得した色は 0xFFFFFF ですが、int に変換しても 0 しか返されません。何が欠けているのか、何が間違っているのか教えてもらえますか?

ありがとう

4

2 に答える 2

2

stringstreams を使用することをお勧めします。

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 に答える