如何组合多个字符串来制作字符串?

时间:2013-12-08 03:36:28

标签: c++ string char

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

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

但是你不能在char上进行字符串连接,这样我就可以在这个问题上模拟连接了吗?

我知道C ++中的字符串库已经附加但我不认为这适用于我的情况。有什么想法吗?

5 个答案:

答案 0 :(得分:17)

您可以将字符连接到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();

答案 1 :(得分:5)

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

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

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

答案 2 :(得分: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

答案 3 :(得分:1)

除了Steve和Benjamin的解决方案之外,您还可以使用std::stringstream

std::stringstream ss;
ss << char_array[index + 1] << '/' << char_array[index + 2];
std::string s = ss.str();

答案 4 :(得分:-1)

如果您使用.Net执行此操作,则可以在字符串构造函数中使用字符数组。

http://msdn.microsoft.com/en-us/library/ttyxaek9(v=vs.110).aspx