如何拼接字符串的部分片段?下述C++代码报错的原因是什么?
代码报错核心原因
std::string通过[]取下标返回的是*char单字符类型*,而非std::string类型。- 代码中
str[0] + str[1]执行的是两个char对应的ASCII码整数加法,最终得到的是*int类型结果*,不是预期的字符串拼接结果。 - C++不支持
int到std::string的隐式转换,因此将加法结果赋值给std::string类型的s时会触发编译错误。
正确的字符拼接实现
如果要把两个单独字符拼接为字符串,可以使用以下几种常用方案:
方案1:构造单字符字符串后相加
#include<bits/stdc++.h> using namespace std; int main() { string str = "Hello"; string s = string(1, str[0]) + string(1, str[1]); cout << s; return 0; }
string(1, str[0])会构造长度为1、内容为str[0]的字符串,两个std::string相加才会触发字符串拼接逻辑。
方案2:用+=运算符逐个追加字符
std::string的+=运算符原生支持直接传入char类型,会自动把字符追加到字符串末尾:
string s; s += str[0]; s += str[1];
方案3:字符串流拼接(适合多类型混合场景)
#include <sstream> // ... stringstream ss; ss << str[0] << str[1]; string s = ss.str();
内容的提问来源于stack exchange,提问作者Pratik
相关产品推荐
相关产品推荐

