如何将const char *附加到const char *

时间:2016-12-17 18:22:21

标签: c++

我试图将三个不同的const char *变量附加到一个变量中。这是因为来自Windows库的函数采用参数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。

3 个答案:

答案 0 :(得分:7)

您需要分配一些空间来保存连接的字符串。幸运的是,C ++有std::string类来为你做这个。

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

请注意,包含连接字符串的空格由fullPath拥有,只要foo在范围内,指针fullPath将保持有效,并且在调用{c_str之后不会修改{1}}。

答案 1 :(得分:1)

如果你想在编译时构建 一堆字符串文字,其中一些是其他字符串文字的连接,最基本的惯用低维护技术是基于好的预处理器

#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++ concat two `const char` string literals)。

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

答案 2 :(得分:0)

当您使用const char*时,您无法更改指向的字符。 因此,无法将const char*附加到const char*