如何将常量字符*附加到常量字符*

How to append const char* to a const char*

本文关键字:常量 字符      更新时间:2023-10-16

我正在尝试将三个不同的 const char* 变量附加到一个中。这是因为窗口库中的函数采用参数 LPCTSTR。 我有以下代码:

const char* path = "C:\Users\xxx\Desktop\";
const char* archivo = "vectors";
const char* extension = ".txt";
const char* fullPath =+ path;
fullPath =+ archivo;
fullPath =+ extension;

当我运行它时,我只得到最后一个(扩展名)添加到 FullPath。

您需要分配一些空间来保存串联的字符串。幸运的是,C++有std::string类为您执行此操作。

std::string fullPath = path;
fullPath += archivo;
fullPath += extension;
const char *foo = fullPath.c_str();

请注意,包含串联字符串的空间归fullPath所有,并且指针foo只有在fullPath在范围内并且在调用c_str后未修改时才会保持有效。

如果你想在编译时构造一堆字符串文字,其中一些是其他字符串文字的串联,最基本的习惯性低维护技术是基于老式的预处理器

#define PATH "C:\Users\xxx\Desktop\"
#define NAME "vectors"
#define EXT  ".txt"
const char *path = PATH;
const char *archivo = NAME;
const char *extension = EXT;
const char *fullPath = PATH NAME EXT;

但是,通过使用一些constexpr和模板元编程魔法,可以以更现代的方式实现同样的事情(请参阅C++连接两个"const char"字符串文字)。

否则,您将不得不求助于运行时串联(如std::string等)。但同样,如果输入在编译时是已知的,那么运行时解决方案就是"失败者的出路":)

使用const char*时,无法更改所指向的字符。 因此,将const char*附加到const char*是不可能的!