9

次のような整数配列があると思います。

a[0]=60; a[1]=321; a[2]=5;

ここで、この配列全体を整数に変換したいと思います。たとえばint b、コードを実行すると 603215 になります。

どうやってするの?

4

5 に答える 5

14

を使用しstd::stringstreamます:

#include <iostream>
#include <sstream>

int main() {
    std::stringstream ss;
    int arr[] = {60, 321, 5};

    for (unsigned i = 0; i < sizeof arr / sizeof arr [0]; ++i)
        ss << arr [i];

    int result;
    ss >> result;
    std::cout << result; //603215
}

C ++ 11では、やや醜いループを次のように置き換えることができることに注意してください。

for (int i : arr)
    ss << i;

また、オーバーフローの可能性が高いことから、。を使用して数値の文字列形式にアクセスできますss.str()。オーバーフローを回避するには、整数に詰め込もうとするよりも、オーバーフローを処理する方が簡単な場合があります。負の値も考慮に入れる必要があります。これは、最初の値が負の場合にのみ機能する(そして意味がある)ためです。

于 2012-06-26T05:09:20.910 に答える
7
int a[] = {60, 321, 5};

int finalNumber = 0;
for (int i = 0; i < a.length; i++) {
    int num = a[i];
    if (num != 0) {
        while (num > 0) {
            finalNumber *= 10;
            num /= 10;
        }
        finalNumber += a[i];
    } else {
        finalNumber *= 10;
    }
}

finalNumber の結果: 603215

于 2012-06-26T05:50:33.043 に答える
5

すべての数値を文字列として連結し、それを数値に変換します

#include <string>
int b = std::stoi("603215");
于 2012-06-26T05:10:24.850 に答える
3

このアルゴリズムは動作します:

  1. for ループを使用して、配列のすべての整数値を文字列に変換します。
  2. インデックス 0 から配列の長さまでのすべての文字列値を 1 つの文字列に追加します。
  3. その文字列を再び整数に変更します。
于 2012-06-26T05:19:31.737 に答える
2

配列を繰り返し、値を文字列に変換します。次に、それらをすべて連結し、整数に変換します。

#include <string>

int a[] = {60, 321, 5};
std::string num = "";
for(auto val : a)
    num += a;
int b = std::stoi(num);
于 2016-10-20T04:12:30.953 に答える