在C ++中为char *添加char前缀的最佳方法?

时间:2013-06-14 14:05:49

标签: c++ string pointers char memcpy

我需要在char *(“很酷”)中添加前缀('X')。

最好的方法是什么?

最简单的方法是什么?

char a = 'X';
char* b= " is cool";

我需要:

char* c = "X is cool";

到目前为止,我尝试了strcpy-strcat,memcpy;

我知道这听起来像是一个愚蠢的,未经研究的问题。 我想知道的是,是否有一种方法可以将char添加到数组而不将char转换为字符串。

4 个答案:

答案 0 :(得分:6)

如何使用C ++标准库而不是C库函数?

auto a = 'X';
auto b = std::string{" is cool"};
b = a+b;

或简称:

auto a ='X';
auto b = a+std::string{" is cool"};

请注意,显式强制转换为字符串。

答案 1 :(得分:2)

也许您可以使用字符串而不是char *?

std::string p = " is cool";
std::string x = 'X' + p;

答案 2 :(得分:1)

您正在使用C ++,因此为此,请不要将char*用于字符串,请使用std::string

std::string str = std::string("X") + std::string(" is cool");
// Or:
std::string str = std::string("X") + " is cool";
// Or:
std::string str = 'X' + std::string(" is cool");
// Or:
std::string str = std::string{" is cool"};

这就像一个魅力,它表达了你的意图,它的可读性和易于打字。 (主观,是的,但无论如何。)


如果您确实需要使用char*,请注意char* b = " is cool";无效,因为您使用的是字符串文字。考虑使用char b[] = " is cool";是一组字符。

您可以使用strcat确保为目标字符串分配足够的内存。

char a[32] = "X"; // The size must change based on your needs.
                  // See, this is why people use std::string ;_;
char b[] = " is cool";

// This will concatenate b to a
strcat(a, b);

// a will now be "X is cool"

但严肃认真的人,避免使用C ++的C端,你会更快乐,更有成效[需要引证]。

答案 3 :(得分:0)

尝试,

char a[20] = "X";
char b[] = " is cool";
strcat(a,b);