如何连接两个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时,两者是不同的。在这种情况下,它们是。

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

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

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

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

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

感谢WhozCraig,我得到了答案:

LPCSTR str1 = "foo",
       str2 = "bar";
std::string(str1).append(str2).c_str();
std::cout<<str1;

返回
foobar

您可以使用std::string类来完成繁重的工作,因为它包含重载的operator+。但是,您必须确保std::string对象在尝试读取其内容之前没有被销毁。

一种方法(在c++ 03中)是:

std::string dest = std::string(directory) + originalFileName;
std::string src = std::string(directory) + fileName;
if (!rename(dest.c_str(), src.c_str())
    // whatever...

首先考虑将directory存储为std::string

相关内容

  • 没有找到相关文章

最新更新