C++中wstring每次输出字符数逐次减少1个的问题如何解决
问题诱因
你代码中L"BotUser" + nameingNumber的写法存在逻辑错误:C++ 中 L"BotUser" 是宽字符字符串字面量,本质为const wchar_t*类型的指针,它和int类型的nameingNumber执行加法运算时,触发的是指针偏移逻辑,而非字符串拼接:每次nameingNumber自增1,就会将指向字符串开头的指针向后移动1个wchar_t长度,跳过对应数量的前缀字符,因此输出内容会逐次少一个前缀字符。
修复方案
你可以选择以下任意一种方式实现数字和宽字符串的正确拼接:
- 方案1:使用
std::to_wstring将数字转为wstring类型后拼接
将赋值行修改为:std::wstring msg = L"BotUser" + std::to_wstring(nameingNumber); - 方案2:使用
std::wstringstream实现多类型内容拼接
先引入sstream头文件:
再修改赋值逻辑:#include <sstream>std::wstringstream wss; wss << L"BotUser" << nameingNumber; std::wstring msg = wss.str();
内容的提问来源于stack exchange,提问作者American Stig
相关产品推荐
相关产品推荐

