-3

3つの変数を1つの変数にマージするのに問題があります:

例 :

int var1,var2,var3;
int result;
var1 = 1;
var2 = 2;
var3 = 3;

result = ........??;

printf("Result %d",result);

output :
123

これどうやってするの?

4

6 に答える 6

5
result = var1 * 100 + var2 *10 + var3;
于 2012-10-09T13:57:02.383 に答える
5

ええ、C++11 の可変個引数テンプレートは素晴らしいです! これはN-finitely 拡張可能なバージョンです。sum(args) < INT_MAX

template<int max, int ...arguments>
int merge_integers()
{
    int args[] = { arguments... };
    int size = sizeof(args) / sizeof(int);
    int mul = 1;
    int result = 0;

    for (int i = size; i--; )
    {
        result += args[i] * mul;
        mul *= max;
    }

    return result;
}

使用例:

printf("%d\n", merge_integers<10, 5, 4, 3, 2, 1>());
printf("%x\n", merge_integers<16, 0xA, 0xB, 0x1, 0x3, 0x5>());
printf("%o\n", merge_integers<8, 1, 2, 3, 4, 7>());

出力:

54321
ab135
12347
于 2012-10-09T14:07:42.977 に答える
5

printf("Result %d%d%d",var1, var2, var3);

于 2012-10-09T14:00:26.293 に答える
0

Should it be:

char str[100];
sprintf(str, "%d%d%d", var1, var2, var3);
sscanf(str, "%d", &result); // or atoi
于 2012-10-09T14:00:06.570 に答える
0

本当に int 変数が必要ですか? ストリングは要件を満たしていますか?

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int
main()
{
    int var1 = 1;
    int var2 = 2;
    int var3 = 3;

    ostringstream oss;
    string result;

    oss<<var1<<var2<<var3;

    result = oss.str();
    cout<<result<<endl;
    return 0;
}
于 2012-10-09T14:17:04.300 に答える
0

変数の桁数がわからない場合は、stringstream を使用する必要があります。

#include <iostream>
#include <sstream>

using namespace std;

int main() {
        int a = 10;
        int b = 12;
        int c = 2;
        stringstream ss;
        ss << a << b << c;
        int merge;
        ss >> merge;
        cout << merge << endl;
        return 0;
}

ideoneでの作業例。

于 2012-10-09T14:02:10.550 に答える