我正在进行字符串解析,基本上我想要做的是这样的:
string signature = char[index+1] + '/' + char[index+2];
但是您不能对字符执行字符串连接操作,因此我有一个问题,如何模拟对字符进行连接操作?
我知道C++中的字符串库具有追加功能,但我认为它在我的情况下行不通。有什么想法吗?
你可以将字符连接到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();
在C++11中,你实际上可以这样做:
std::string signature{chars[index+1], '/', chars[index+2]};
不确定在实际代码中这会有多大用处,但它可以处理你的示例。
std::stringstream
:std::stringstream ss;
ss << char_array[index + 1] << '/' << char_array[index + 2];
std::string s = ss.str();
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
即可。