簡體   English   中英

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

[英]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_strfullPath在范圍內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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM