You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将<char, int>类型unordered_map元素拼接为指定格式字符串?

问题解决:将unordered_map<char, int>转为目标字符串

你代码里的问题很明确:直接把int类型的数值赋值给char变量时,程序会把这个int当作ASCII码来解析,而不是转成对应的数字字符。比如int值1对应的ASCII字符是不可打印的控制字符(就是你看到的☺),这显然不是你想要的结果。

要把int数字转成对应的字符,只需要给这个int值加上字符'0'的ASCII值就行——因为字符'0'到'9'的ASCII码是连续的('0'对应48,'1'对应49,以此类推),所以value.second + '0'就能得到对应数字的字符形式。

修正后的代码如下:

#include <bits/stdc++.h>
using namespace std;

int main(){
    unordered_map<char, int> m;
    m.insert({'1',1});
    m.insert({'2',1});
    string s = "";
    for(auto& pair : m){
        s += pair.first;
        // 关键修正:给int值加上'0'转成对应字符
        s += pair.second + '0';
    }
    cout << s << endl;
}

另外注意:unordered_map是无序容器,遍历顺序不一定和插入顺序一致,所以你可能会得到"1122"或者"2211"这类结果。如果需要严格按照插入顺序或者按键排序的顺序生成字符串,可以换成map容器。

内容的提问来源于stack exchange,提问作者Krishna Nand Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:52:43