C++学习——如何在C++中把map存入一个txtx文件

文稿之后有空在写,英文比较好的可以看看这个链接:Write map to a file

int WriteFile(std::string fname, std::map<std::string, std::string> *m) {
        int count = 0;
        if (m->empty())
                return 0;

        FILE *fp = fopen(fname.c_str(), "w");
        if (!fp)
                return -errno;

        for(std::map<std::string, std::string>::iterator it = m->begin(); it != m->end(); it++) {
                fprintf(fp, "%s=%s\n", it->first.c_str(), it->second.c_str());
                count++;
        }

        fclose(fp);
        return count;
}
int ReadFile(std::string fname, std::map<std::string, std::string> *m) {
        int count = 0;
        if (access(fname.c_str(), R_OK) < 0)
                return -errno;

        FILE *fp = fopen(fname.c_str(), "r");
        if (!fp)
                return -errno;

        m->clear();

        char *buf = 0;
        size_t buflen = 0;

        while(getline(&buf, &buflen, fp) > 0) {
                char *nl = strchr(buf, '\n');
                if (nl == NULL)
                        continue;
                *nl = 0;

                char *sep = strchr(buf, '=');
                if (sep == NULL)
                        continue;
                *sep = 0;
                sep++;

                std::string s1 = buf;
                std::string s2 = sep;

                (*m)[s1] = s2;

                count++;
        }

        if (buf)
                free(buf);

        fclose(fp);
        return count;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化橙同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值