微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么会出现这个“\r”?

如何解决为什么会出现这个“\r”?

我目前正在学习 C++,并尝试使用 JSON。

这是我的代码

#include "main.hpp"

#define MAX_USERS_COUNT 5000

using json = nlohmann::json;

namespace user {
    struct datas {
        int ID;
        std::string PIN;
        std::string name;
        std::string email;
        int age;
    };

    // convert datas to JSON
    void to_json(nlohmann::json& json,const user::datas& datas) {
        json = nlohmann::json { {"ID",datas.ID},{"PIN",datas.PIN},/*{"name",datas.name},*/ {"email",datas.email},{"age",datas.age} };
    }

    // convert JSON to datas
    void from_json(const nlohmann::json& json,user::datas& datas) {
        json.at("ID").get_to(datas.ID);
        json.at("PIN").get_to(datas.PIN);
        /*json.at("name").get_to(datas.name);*/
        json.at("email").get_to(datas.email);
        json.at("age").get_to(datas.age);
    }
}

nlohmann::json convertDatasToJSON(nlohmann::json&,user::datas,std::string);

int main(int argc,char *argv[]) {
    user::datas prototype[MAX_USERS_COUNT]; // create an array of users with a max count
    nlohmann::json jsonDatas;

    std::ifstream namesFile("./res/files/learnjson/names.txt");
    std::string line;
    std::vector<std::string> namesList = {};
    while(getline(namesFile,line)) {
        namesList.push_back(line);
    }

    for(int i = 0; i < 5; i++) {
        int index = rand() % namesList.size() + 1;

        prototype[i] = {
            i,std::to_string(rand() % 999999999 + 100000000),// generate a number from 100000000 to 999999999
            namesList[index],// ex: "name"
            namesList[index] + "@e-mail.com",rand() % 100 + 1 // generate a number from 1 to 100
        };

        convertDatasToJSON(jsonDatas,prototype[i],"users");
    }

    std::cout << std::setw(4) << jsonDatas << std::endl;

    namesFile.close();
    return 0;
}

// convert user datas to JSON
nlohmann::json convertDatasToJSON(nlohmann::json& json,user::datas datas,std::string jsonLocation) {
    json[jsonLocation] [datas.name] = datas;
    return json;
}

我正在使用的姓名列表文件是这样制作的:

Kikelia
Kiker
Kiki
Kila
Kilah
Kilan
Kilar
Kilbride
Kilby
Kile
Kiley
Kilgore
Kilian
Kilk
Killam
Killarney
Killen

一切都完美无缺(这就是我的 json 生成方式):

{
    "users": {
        "Elayne\r": {
            "ID": 4,"PIN": "174243042","age": 88,"email": "Elayne\r@e-mail.com"
        },"Essie\r": {
            "ID": 2,"PIN": "557850879","age": 24,"email": "Essie\r@e-mail.com"
        },"Fowler\r": {
            "ID": 3,"PIN": "923564440","age": 66,"email": "Fowler\r@e-mail.com"
        },"O'Rourke\r": {
            "ID": 1,"PIN": "244108931","age": 73,"email": "O'Rourke\r@e-mail.com"
        },"Rasmussen\r": {
            "ID": 0,"PIN": "382475249","age": 74,"email": "Rasmussen\r@e-mail.com"
        }
    }
}

有人能帮我解释一下为什么出现那些“\r”吗? 提前致谢 !!祝你有美好的一天!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。