C++如何实现多字符串拼接如"123"+"456",解决VS报错C2110、E2140?
报错原因
你遇到的报错是C++语法规则限制导致的:
- 双引号包裹的字符串默认是C风格
const char*类型常量,并非std::string类型 - C++没有为两个
const char*类型定义加法运算符,直接对两个字符串常量执行+运算本质是尝试对两个指针地址相加,属于非法操作,对应触发C2110(无法对两个指针执行加法)、E2140(表达式类型不符合加法要求)错误。
解决方法
方法1:显式转换首个字符串为std::string类型
只要确保加法运算的第一个操作数是std::string类型,后续的+会自动调用std::string的重载加法运算符,依次拼接后续的C风格字符串:
std::string a = std::string("2323") + "22323" + "232332";
方法2:使用C++14新增的std::string字面量后缀s
引入std::string_literals命名空间后,后缀s标记的字符串会自动识别为std::string类型,写法更简洁:
using namespace std::string_literals; std::string a = "2323"s + "22323" + "232332";
方法3:用append方法分步拼接
如果需要动态拼接多段字符串,也可以使用std::string自带的append方法:
std::string a; a.append("2323"); a.append("22323"); a.append("232332");
方法4(C++20及以上版本支持):使用std::format拼接
如果你的编译器支持C++20标准,可以用std::format更清晰地拼接多段内容:
std::string a = std::format("{}{}{}", "2323", "22323", "232332");
内容的提问来源于stack exchange,提问作者Altman Jeffry
相关产品推荐
相关产品推荐

