[英]How to append const char* to a const char*
我試圖將三個不同的 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。
您需要分配一些空間來保存連接的字符串。 幸運的是,C++ 有std::string
類可以為你做這件事。
std::string fullPath = path;
fullPath += archivo;
fullPath += extension;
const char *foo = fullPath.c_str();
請注意,包含連接字符串的空間歸fullPath
所有,並且指針foo
只有在調用c_str
后fullPath
在范圍內fullPath
修改時才會保持有效。
如果你想在編譯時構造一堆字符串文字,其中一些是其他字符串文字的串聯,最基本的慣用低維護技術是基於古老的預處理器
#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
等)。 但同樣,如果輸入在編譯時已知,那么運行時解決方案是“失敗者的出路”:)
當您使用const char*
您無法更改指向的字符。 所以將const char*
附加到const char*
是不可能的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.