如何将多个字符组合成一个字符串?

19

我正在进行字符串解析,基本上我想要做的是这样的:

string signature = char[index+1] + '/' + char[index+2];

但是您不能对字符执行字符串连接操作,因此我有一个问题,如何模拟对字符进行连接操作?

我知道C++中的字符串库具有追加功能,但我认为它在我的情况下行不通。有什么想法吗?

4个回答

30

你可以将字符连接到std::string中,你只需要其中一个操作数是std::string,否则你将添加整数。

std::string signature = std::string() + char_array[index+1] + '/' + char_array[index+2];

请注意,这只有在链式表达式中的第一个或第二个操作数是 std::string 的情况下才有效。这将导致对 operator+ 的第一次调用返回一个 std::string,其余的也会跟随其后。因此,以下代码无法得到预期的结果:

std::string signature = char_array[index+1] + '/' + char_array[index+2] + std::string();

15

在C++11中,你实际上可以这样做:

std::string signature{chars[index+1], '/', chars[index+2]};

不确定在实际代码中这会有多大用处,但它可以处理你的示例。


2
不仅有用,而且可能是与其他答案相比最有效的版本。RAII - JHBonarius

4
除了 Steve 和 Benjamin 的解决方案外,您还可以使用 std::stringstream
std::stringstream ss;
ss << char_array[index + 1] << '/' << char_array[index + 2];
std::string s = ss.str();

1
您可以很容易地将字符和C风格的字符串连接到现有字符串中:
string signature;

signature += char_array[index + 1];  // append character from char_array[index+1]
signature += '/';
signature += char_array[index + 2];  // append character from char_array[index+2]

你只需要确保++=的左边是一个std::string即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接