如何将常量字符*附加到常量字符*
How to append const char* to a const char*
我正在尝试将三个不同的 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*
是不可能的!
相关文章:
- 如何循环访问常量字符**?
- constexpr 函数获取常量字符*
- 如何计算常量字符**中的总字符数?
- QDial:如何将 int 值传递给需要常量字符*的 Qfile?
- 为什么 std::string_view 比常量字符*快?
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 在编译时将常量字符* 转换为常量 char_type*
- 将字符串数组传递给接受常量字符**的函数
- 错误:请求从"常量字符 [5]"转换为非标量类型"字符串"
- 字符串强制转换为常量字符*
- 使用常量字符*时退出代码 139
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 无法在声明时使用初始值设定项列表初始化常量字符*/字符串数组的向量
- 无法<string>从"常量字符 []"转换为<类名>
- 初始化常量字符* 数组
- 常量字符*的性质是什么?
- C++ 获取向量中常量字符* [ ] 的长度
- 无法将参数 1 从 WCHAR 转换为常量字符 *
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- C++将常量字符* 指针数组传递给对象