如何连接两个LPCSTR

时间:2015-08-15 02:28:00

标签: c++ concatenation lpcstr

我需要连接两个LPCSTR,如下所示:

if (!rename(directory + originalFileName, directory + fileName)){
    std::cout<<originalFileName<<std::endl<<fileName<<std::endl<<std::endl;
}

但唯一的问题是我无法在此处使用+运算符。我怎样才能安全地连接这样的两个LPCSTR?

编辑:请注意,LPCSTR定义为const * char,而LPCTSTR定义为const TCHAR*。当定义UNICODE和/或_UNICODE时,两者是不同的。在这种情况下,他们是。

3 个答案:

答案 0 :(得分:2)

由于这些字符串是const,因此需要一个新的缓冲区来保存结果。这意味着使用'strlen'查找字符串的长度,使用'new'分配缓冲区,并使用'strcpy'和'strcat'复制字符串

这是一个如何学习它的提示,而不是我为你编写代码。

此外,还有其他选项,例如根据您的工具集使用std :: string或CString。

答案 1 :(得分:2)

由于LPCSTRCONST CHAR*我使用了这个,

(string(dir) + string(originalFileName)).c_str()

答案 2 :(得分:0)

LPCSTR是 const char * 的typedef。所以你不能使用这样的运算符。 我的建议如下:

  1. 使用CString类型变量。
  2. 使用strcpy函数。
  3. 这篇文章可能对您有所帮助。 http://www.codeproject.com/Articles/76252/What-are-TCHAR-WCHAR-LPSTR-LPWSTR-LPCTSTR-etc