我有两个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时,两者是不同的。在这种情况下,它们是。
由于LPCSTR
是CONST 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