次のような整数配列があると思います。
a[0]=60; a[1]=321; a[2]=5;
ここで、この配列全体を整数に変換したいと思います。たとえばint b
、コードを実行すると 603215 になります。
どうやってするの?
を使用し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()
。オーバーフローを回避するには、整数に詰め込もうとするよりも、オーバーフローを処理する方が簡単な場合があります。負の値も考慮に入れる必要があります。これは、最初の値が負の場合にのみ機能する(そして意味がある)ためです。
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
すべての数値を文字列として連結し、それを数値に変換します
#include <string>
int b = std::stoi("603215");
このアルゴリズムは動作します:
配列を繰り返し、値を文字列に変換します。次に、それらをすべて連結し、整数に変換します。
#include <string>
int a[] = {60, 321, 5};
std::string num = "";
for(auto val : a)
num += a;
int b = std::stoi(num);