为什么会出现这个“\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 (将#修改为@)