在另一个char * C ++的开头插入一个char *

时间:2013-11-24 14:53:04

标签: c++ string pointers char

我想知道在另一个char*的开头是否有任何方式插入char*

例如:

char* a;
char* b;
char* ba;

a="HOW ARE YOU?";
b="HELLO, ";

我想首先插入char* b,然后插入char* a,因此char* ba的内容将是

"HELLO, HOW ARE YOU?"

这可能吗?

非常感谢你

3 个答案:

答案 0 :(得分:9)

如@alan所述,请使用std::string

std::string a = "How are you?", b = "Hello, ", ba;
ba = b + a;

更新

正如@Vlad正确指出的那样,没有必要使用std::string作为字符串常量。您可以改用const char*。但现在,你不能说

ba = b + a;

,因为这会添加char指针,这是不可能的。

您必须将连接拆分为两个操作

const char *a = "How are you?";
const char *b = "Hello, ";
std::string ba;
ba = b;
ba += a;

如果你真的,真的必须使用普通的C字符串(例如,这是我的作业或者我的老板威胁要解雇我),你当然可以使用@ Vlad的方法。但是你应该把它包装在一个函数中,它负责计算和分配。

但是,你仍然必须知道内存问题。您现在负责释放分配的内存。

答案 1 :(得分:6)

如果ba指向动态分配的数组或者本身是一个可以容纳这两个字符串文字的数组,则没有问题。例如

char *ba = new char[ std::strlen( a ) + std::strlen( b ) + 1];

std::strcpy( ba, b );
std::strcat( ba, a ); 

答案 2 :(得分:-1)

您可以使用:

char * strcpy ( char * destination, const char * source );

/* strcpy example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str1[]="Sample string";
  char str2[40];
  char str3[40];
  strcpy (str2,str1);
  strcpy (str3,"copy successful");
  printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
  return 0;
}