我正在进行字符串解析,基本上我想做的是这样的事情:
string signature = char[index+1] + '/' + char[index+2];
但是你不能在char上进行字符串连接,这样我就可以在这个问题上模拟连接了吗?
我知道C ++中的字符串库已经附加但我不认为这适用于我的情况。有什么想法吗?
答案 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