如何通过组合多个字符数组来创建字符数组?

时间:2019-11-26 18:00:40

标签: c++ arrays char

在C ++中,如何将两个char数组组合为一个char数组?

我认为应该是这样的:

char[5] text1 = "12345";
char[1] text2 = ",";
char[5] text2 = "678/n";

char[] Value = text1 + text2 + text3;

输出为:

  

12345,678 / n

我想通过串行端口发送一个char数组,并且想知道如何做到这一点。

3 个答案:

答案 0 :(得分:5)

由于您指定了C ++,所以一定要使用std::string

std::string text1 = "12345";
std::string text2 = ",";
std::string text3 = "678/n";

std::string Value = text1 + text2 + text3;

如果您需要访问实际字符以发送到串行端口,请使用Value.c_str()

顺便说一句,您的原始代码没有为char数组中的尾随null分配足够的空间。这可能导致内存损坏。

答案 1 :(得分:1)

在c ++中,使用std::string。它专门为解决此类问题而创建。

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

int main()
{
    string text1( "12345" );
    string text2( "," );
    string text3( "678/n" );
    cout << text1 + text2 + text3;
    return 0;
}

但是,如果您只想使用char数组来答案,可以尝试一下。

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char text1[6] = "12345";
    char text2[2] = ",";
    char text3[6] = "678/n";

    char combine[100];

    strcpy(combine, text1); 

    strcat(combine, text2);
    strcat(combine, text3);

    puts(combine);

    return 0;
}

答案 2 :(得分:0)

在C ++中,您可以使用字符串流:

stringstream ss;
ss << "12345" << "," << "678/n";
cout << ss.str();