C++(STL)中的连接字符串

Posted

技术标签:

【中文标题】C++(STL)中的连接字符串【英文标题】:Concat string in C++(STL) 【发布时间】:2009-06-11 07:56:26 【问题描述】:

我有这样的代码

string xml_path(conf("CONFIG"));

xml_path+=FILE_NAME;

在哪里, conf 函数返回char *,文件名是const char *

我想把它合并成一行

xml_path(conf("CONFIG")).append(FILE_NAME) 

我该怎么做?

有什么建议吗??

【问题讨论】:

每个人都错过了您要求单线解决方案的事实。 (但你为什么想要那个?) 假设我想连接 5 个字符串然后我可以做到 .append().append() 我不需要像在 java StringBuffer 中那样做 5 个步骤 obj = new StringBuffer("foobar" ).append("foo").append("bar"); 【参考方案1】:

问了一行:

string xml_path = string(conf("CONFIG")) + string(FILE_NAME);

(我假设xml_path 是变量的名称,而不是我不知道的库中的某种调用)。

【讨论】:

【参考方案2】:

或者,如果您想格式化不同类型的变量,请使用 ostringstream。

例如。

std::ostringstream oss; 
int a = 2; 
char *s = "sometext"; 
oss<<s<<a<<endl; 
cout<<oss.str(); // will output "sometext2"

【讨论】:

【参考方案3】:
const char * f = "foo";
char * b = "bar";

string s = string( f ) + b;

请注意,您不能使用 append(-0,因为涉及的字符串都不是 std:;string。如果您真的要追加,则必须是两阶段过程:

string s ( f );
s.append( b );

【讨论】:

【参考方案4】:
string xml_path(conf("CONFIG"));
xml_path += string(FILE_NAME);

应该可以解决问题。

【讨论】:

以上是关于C++(STL)中的连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

将带有时间戳的向量整数连接为C++中的字符串?

C++中的STL(超详细的操作)

C++中的STL(超详细的操作)

C++ STL中的二分查找

C ++中的基本字符串连接未正确输出[关闭]

swig c++ to perl : 如何使用 c++11 字符串 STL 函数