用C ++连接char数组

时间:2014-06-17 02:56:51

标签: c++ arrays char concatenation

我有以下代码,并希望最终得到一个字母,如:“你好,你好吗?” (这只是我想要实现的一个例子)

如何连接2个char数组并在中间添加“,”和“你?”最后?

到目前为止,这会连接2个数组但不确定如何将其他字符添加到我想要的最终char变量中。

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    char foo[] = { "hello" };
    char test[] = { "how are" };
    strncat_s(foo, test, 12);
    cout << foo;
    return 0;
}

编辑:

这是我在你的所有回复之后提出的。我想知道这是否是最佳方法?

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    char foo[] = { "hola" };
    char test[] = { "test" };
    string foos, tests;
    foos = string(foo);
    tests = string(test);
    string concat = foos + "  " + tests;
    cout << concat;
    return 0;
}

5 个答案:

答案 0 :(得分:12)

在C ++中,使用std::stringoperator+,它专门用于解决此类问题。

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

int main()
{
    string foo( "hello" );
    string test( "how are" );
    cout << foo + " , " + test;
    return 0;
}

答案 1 :(得分:4)

最好的事情是在C ++中使用std::string作为其他答案。如果你真的需要使用char尝试这种方式。没有经过测试。

const char* foo = "hello";
const char* test= "how are";

char* full_text;
full_text= malloc(strlen(foo)+strlen(test)+1); 
strcpy(full_text, foo ); 
strcat(full_text, test);

答案 2 :(得分:0)

是的,在C ++中,使用+运算符进行字符串连接。 但这不起作用:

char[] + char[] + char[]

将一个数组转换为std :: string,它将:

std::string(char[]) + char[] + char[]

例如:

#include <iostream>

int main()
{
    const char a[] = "how ";
    const char b[] = "are ";
    const char c[] = "you ";

    std::cout << std::string( a + b + c ) << "\n"; // Error
    std::cout << std::string(a) + b + c  << "\n"; // Fine
}

答案 3 :(得分:0)

如果您不想使用字符串,则可以简单地通过获取另一个数组并使用循环将两个数组存储在其中来实现

#include<iostream>
#include<stdlib.h>
#include<cstdio>
using namespace std;
int main(){
    char fname[30],lname[30],full_name[60];
    int i,j;
    i=0;j=0; // i is index of fname and j is index for lname
    cout<<"Enter your first name: ";
    gets(fname);
    cout<<"Enter your last name: ";
    gets(lname);
    for (i;fname[i]!='\0';i++){
        full_name[i] = fname[i];
    }
    cout<<"i ="<<i;
    full_name[i]=' ';
    i = i + 1;
    for (i,j;lname[j]!='\0';i++,j++){
        full_name[i] = lname[j];
    }
    cout<<"Your full name is: "<<full_name<<endl;
    system("pause");
    return 0;
}

答案 4 :(得分:0)

cout<<x<<y<<z<<" ";
char arr[3] = {x , y ,z};
ans.push_back(arr);

如果你想推入向量数组。