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

C++ 在C+;中向char*添加char前缀的最佳方法+;?,c++,string,pointers,char,memcpy,C++,String,Pointers,Char,Memcpy,我需要在char*(“很酷”)中添加前缀('X') 最好的方法是什么 最简单的方法是什么 char a = 'X'; char* b= " is cool"; 我需要: char* c = "X is cool"; 到目前为止,我试过strcpy strcat,memcpy 我知道这听起来是一个愚蠢的、未经研究的问题。 我想知道的是,是否有一种方法可以在不将字符转换为字符串的情况下将字符添加到数组中 试试看 char a[20] = "X"; char b[] = " is cool"; s

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

最好的方法是什么

最简单的方法是什么

char a = 'X';
char* b= " is cool";
我需要:

char* c = "X is cool";
到目前为止,我试过strcpy strcat,memcpy

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

试试看

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

也许你可以用字符串代替char*

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

<如何使用C++标准库代替C库函数?< /P>
auto a = 'X';
auto b = std::string{" is cool"};
b = a+b;
或简称:

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

请注意,显式转换为字符串是必需的

> p>你使用C++,因此,不要使用<代码> char */COD>字符串,使用<代码> 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=“很酷”无效,因为您使用的是字符串文字。考虑使用<代码> char b[] =“很酷”;<代码>这是一个字符数组

您需要确保为目的地字符串分配足够的内存

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端,你会更快乐,更有效率(引用需要)。顺便说一句,代码>现在格式不正确。它应该是

char const*b=“很酷”
字符b[]=“很酷”.strcat是最简单的。到目前为止,您尝试了什么?您将什么定义为“最佳”?最容易读/写的代码,运行速度最快,占用内存最少,在一些“artwork”IOCCC竞赛中看起来最美观?@SBI
strcat()
可能很容易,但请注意问题的开头是
char a='X'
,它不是
[const]char*[const]
,所以
strcat()
不是一个合适的解决方案(至少没有一些预处理…)。这是不安全的wrt字符串长度:如果您将字符串从“is cool”更改为“is really,really,cool”,您将得到UB。我相信这就是我要找的。。在C++中,以前从未编程过,只有C,我不确定它是否能处理像java、js或其他语言那样的C++连接。除了字符串字符串,除了字符串,你不能工作。@ VDLAToToCl注意到<代码> +/COD>连接用于<代码> STD::String < /Cord>对象(应该在C++中使用)但不适用于
char*
C样式字符串(在C++中应该避免)。谢谢。。它工作得很好“它会像一个符咒一样工作,它表达了你的意图,可读性强,易于输入。”不。它表示意图,但不会编译,因为添加两个
char const*
对编译器来说是无意义的。对于你的答案的另一部分:为什么首先告诉他使用C++然后回到不安全的C函数?“阿纳梅茨,我注意到,当人们不使用STL时,他们正在做家庭作业或某事。好的,要么允许他使用STL,然后给他干净的解决方案就足够了,并向他展示一些新的东西来学习。或者不允许他使用,那么他应该在问题中明确地说出来,我们不应该鼓励他写草率的问题;-)