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

Best way to add a char prefix to a char* in C++?

本文关键字:char 最佳 方法 前缀 c++ 中为 添加      更新时间:2023-10-16

我需要给字符* (" is cool")添加一个前缀('X')

最好的方法是什么?

最简单的方法是什么?

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

:

char* c = "X is cool";

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

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

用c++标准库代替C库函数怎么样?

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

或短:

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

注意,显式强制转换为string是强制性的。

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

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

你使用的是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端,你会更快乐,更有效率[来源请求]。

试试,

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