1

数字を区切ってサイズ3の文字列に順番に入れることで、整数を文字列に入れようとしています

これは私のコードです:

char pont[4];
void convertInteger(int number){
int temp100=0;
int temp10=0;
int ascii100=0;
int ascii10=0;
if (number>=100) {
    temp100=number%100;
    ascii100=temp100;
    pont[0]=ascii100+48;
    number-=temp100*100;
    temp10=number%10;
    ascii10=temp10;
    pont[1]=ascii10+48;
    number-=temp10*10;
    pont[2]=number+48;
}
if (number>=10) {
    pont[0]=48;
    temp10=number%10;
    ascii10=temp10;
    pont[1]=ascii10+48;
    number-=temp10*10;
    pont[2]=number+48;
}
else{
    pont[0]=48;
    pont[1]=48;
    pont[2]=number+48;
}
}

これが起こると思われるものの例です:

number = 356

temp100 = 356%100 = 3

ascii100 = 3

pont[0]= ascii100 = 3

temp100 = 3*100 = 300

number = 365 - 300 = 56

temp10 = 56%10 = 5

ascii10 = 5

pont[1]= ascii10 = 5

temp10 = 5*10 = 50

number = 56 - 50 = 6

pont[2]=6

どこかにエラーがあり、それが表示されない可能性があります(理由はわかりません)...ちなみに、これはC ++であると想定されています。これをC言語と混同している可能性があります...よろしくお願いします

4

2 に答える 2

1

おそらくあなたが今見落としている間違い:

    pont[2]=number+48;
}
if (number>=10) {    /* should be else if */
    pont[0]=48;

ただし、別のアプローチを提案したいと思います。値が、 などの上にあることはにしません。答えをゼロで埋めることを気にしない場合は、依然として有用な値です。100100

次の数値を考慮してください。

int hundreds = (number % 1000) / 100;
int tens = (number % 100) / 10;
int units = (number % 10);
于 2012-05-01T23:23:34.137 に答える
1

すべての組み込み型は、自分自身を に表現する方法を知っていますstd::ostream。精度のためにフォーマットしたり、別の表現に変換したりできます。

この統一された処理により、組み込みを標準出力に書き込むことができます。

#include <iostream>

int main()
{
    std::cout << 356 << std::endl; // outputting an integer
    return 0;
}

出力:

356

以外にもストリーミングできますcoutstd::ostringstreamと同じように使用できるという標準クラスがありますが、coutすべてを標準出力に送信するのではなく、文字列に変換できるオブジェクトを提供します。

#include <sstream>
#include <iostream>

int main()
{
    std::ostringstream oss;
    oss << 356;

    std::string number = oss.str(); // convert the stream to a string

    std::cout << "Length: " << number.size() << std::endl;
    std::cout << number << std::endl; // outputting a string
    return 0;
}

出力:

Length: 3
356
于 2012-05-02T11:31:47.487 に答える