我试图将三个不同的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。
答案 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*
!