Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将3个变量合并为一个变量_C++_C - Fatal编程技术网

C++ 如何将3个变量合并为一个变量

C++ 如何将3个变量合并为一个变量,c++,c,C++,C,我无法将3个变量合并为一个变量: 例如: int var1,var2,var3; int result; var1 = 1; var2 = 2; var3 = 3; result = ........??; printf("Result %d",result); output : 123 我怎样才能做到这一点呢?应该是: result = var1 * 100 + var2 *10 + var3; char str[100]; sprintf(str, "%d%d%d", var1,

我无法将3个变量合并为一个变量:

例如:

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

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

printf("Result %d",result);

output :
123
我怎样才能做到这一点呢?

应该是:

result = var1 * 100 + var2 *10 + var3;
char str[100];
sprintf(str, "%d%d%d", var1, var2, var3);
sscanf(str, "%d", &result); // or atoi

printf(“结果%d%d%d”,var1,var2,var3)

如果您不知道变量有多少位数,则必须通过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;
}
#包括
#包括
使用名称空间std;
int main(){
INTA=10;
int b=12;
int c=2;
细流ss;

ss耶,C++11可变模板太棒了!这里有一个
N
-有限扩展版本,假设
sum(args)

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;
}
模板
int merge_integers()
{
int args[]={arguments…};
int size=sizeof(args)/sizeof(int);
int mul=1;
int结果=0;
对于(int i=大小;i--;)
{
结果+=args[i]*mul;
mul*=最大值;
}
返回结果;
}
用法示例:

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>());
printf(“%d\n”,merge_integers());
printf(“%x\n”,merge_integers());
printf(“%o\n”,merge_integers());
输出:

54321 ab135 12347 54321 ab135 12347
您真的需要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;
}
#包括
#包括
#包括
使用名称空间std;
int
main()
{
int var1=1;
int var2=2;
int var3=3;
ostringstream oss;
字符串结果;

你想要C解决方案还是C++解决方案?它们不是同一种语言。为什么要这样做?作业?如果这样,就这样记下。(打……不要这样做!)TMPELCE:[作业]标签已经被禁止了。@作业标签已经死了,不要使用,不要告诉别人使用它。如果你澄清,我想你会迈出一大步。(甚至对自己)什么“这”就是说!现在用C++模板编写一个代码> n>代码>有限可扩展版本!JK+1如果VAR1、VAR2和VAR3不是1位数字,那又会怎样呢?numbers@izomorphius嗯……这仍然是三个变量的组合。问题中没有任何地方说它必须是可逆的。这是一个不同的问题,不难解决是的,但这是不可逆的,并且sscanf在发生溢出时具有未定义的行为。。。