C++ 将多个char*字符串格式化为std::字符串

C++ 将多个char*字符串格式化为std::字符串,c++,C++,我需要将两个char*字符串和一个char*文本组合成一个std::字符串。下面是我正在做的。它可以工作,但我不喜欢它的外观(用3行代码来完成)。我想知道是否有更好的方法 std::string strSource = _szImportDirectory; strSource += "\\"; strSource += _szImportSourceFile; 谢谢你的帮助 std::string strSource = std::string(_szImportDirectory) + "

我需要将两个char*字符串和一个char*文本组合成一个std::字符串。下面是我正在做的。它可以工作,但我不喜欢它的外观(用3行代码来完成)。我想知道是否有更好的方法

std::string strSource = _szImportDirectory;
strSource += "\\";
strSource += _szImportSourceFile;
谢谢你的帮助

std::string strSource = std::string(_szImportDirectory) + "\\" + _szImportSourceFile;
这是一个显而易见的方法

另一种方法是使用
std::stringstream

std::stringstream s;
s << _szImportDirectory << '\\' + _szImportSourceFile;
std::string strSource = s.str()
std::strings;
是这样的吗

std::string str = std::string(_szImportDirectory).append("\\").append(_szImportSourceFile);

PS:用正确的代码更新了

顺便说一句,看起来像Java StringBuffer样式:),这是一件好事。说实话,我真的很怀念用C++处理字符串时的所有java便利。(被否决的评论会影响我的声誉吗?
String s=strImportDir+“\\”+strImportFile;s、 替换(“某些正则表达式”、“b”);如果(s.match(“\$\{hi\}”){/*etc*/};/*事实上我知道我可以用std::string来完成这一切,但我仍然在学习它的全部*/
哦,我忘了我最喜欢的
string[]a=s.split(,”;
John,对于正则表达式,你可以使用std::tr1扩展或boost::regex.谢谢。我想如果我有大量的字符要组合(我经常这样做)然后stringstream解决方案变得更有效。我现在就用它。现在我想,我也可以用stringstream输入int和其他任何可以发送到cout的东西,我想。这肯定是我想要的。Seth,与手头的问题没有关系,但是如果我有stringstream and想从中获取一个char*,我可以直接从stringstream中获取它吗?或者我可以获取一个std::string,然后是c_str()吗?@John yeah,你需要调用
str()
来“物化”字符串,然后
c_str()
来获取指向它的指针。我会保存它从
str()返回的字符串
但是如果您可以再次使用它,因为这不是一个便宜的操作。@Seth:您需要保存
str
中的
字符串,否则
c\u str
指向的内存将被释放。@Seth:当您执行s.str()时您将获得一个新分配的字符串。如果您没有捕获它,它将在语句末尾释放。在
char*cptr=s.str().c_str();
中,临时字符串只持续到
,因此内存
c_str()
指向在您可以使用
cptr
时不再有效。如果您将结果传递给另一个函数,如
strcpy
或其他一些需要以null结尾的
char*
的函数,那么只要它不存储指针,就可以了。