0

プログラムを実行すると、長い間クラッシュします。 thisLong = atoll(c); これには何か理由がありますか?

string ConvertToBaseTen(long long base4) {
    stringstream s;
    s << base4;
    string tempBase4;
    s >> tempBase4;
    s.clear();
    string tempBase10;
    long long total = 0;
    for (signed int x = 0; x < tempBase4.length(); x++) {
         const char* c = (const char*)tempBase4[x];
         long long thisLong = atoll(c);
         total += (pow(thisLong, x));
    }
    s << total;
    s >> tempBase10;
    return tempBase10;
}
4

1 に答える 1

3

atollconst char*は入力として必要ですが、tempBase4[x]のみを返しますchar

文字列の各文字を 10 進数に変換する場合は、次を試してください。

for (signed int x = 0; x < tempBase4.length(); x++) {
   int value = tempBase4[i] -'0';
   total += (pow(value , x));
}

または、tempBase 全体を次のように変換する場合long long:

long long thisLong = atoll(tempBase4.c_str());
total += (pow(thisLong, x));
于 2013-02-14T05:52:47.670 に答える