C++ 如何在C+中读取文本文件并将其拆分为值+;

C++ 如何在C+中读取文本文件并将其拆分为值+;,c++,C++,这是我的文本文件(mytext.text): 但我认为它不会保存相应参数的值 我知道我应该用分隔符分割每一行,然后将字符串转换为double(float),但我不知道如何为每一行实现它。您需要使用某种映射数据结构来存储参数值。您可能需要std::unordered_map。正如@user4581301所说,您可以使用带有特定分隔符的std::getline,比如逗号 std::unordered_map<std::string, float> params; std::ifstrea

这是我的文本文件(
mytext.text
):

但我认为它不会保存相应参数的值


我知道我应该用分隔符分割每一行,然后将字符串转换为
double
float
),但我不知道如何为每一行实现它。

您需要使用某种映射数据结构来存储参数值。您可能需要
std::unordered_map
。正如@user4581301所说,您可以使用带有特定分隔符的
std::getline
,比如逗号

std::unordered_map<std::string, float> params;
std::ifstream myfile("mytext.txt");
std::string param_name;
float param_value;
while (std::getline(myfile, param_name, ',')) {
    myfile >> param_value;
    myfile.get(); // discard newline
    params.insert({ param_name, param_value });
}
std::无序映射参数;
std::ifstream myfile(“mytext.txt”);
std::字符串参数名称;
浮动参数值;
while(std::getline(myfile,参数名,,)){
myfile>>参数值;
myfile.get();//放弃换行符
插入({param_name,param_value});
}

此代码不处理无效输入,因此如果需要,可以添加错误处理。

。当它使用
>
分割行时,您需要另一个
getline
,特别是像
getline(iss,token,,')
这样的东西在逗号上分割。将
令牌
std::string
转换为double.You;;可能需要使用映射数据结构来存储值:不能动态声明变量的新名称,因此需要将值存储在某种容器中。我建议使用
myfile.ignore(numeric\u limits::max(),'\n')
而不是
myfile.get()
。或者,根本不要在外部
getline()
上使用
,“
,然后使用
istringstream
解析循环中的每一行,例如:
while(std::getline(myfile,line)){istringstream iss(line);getline(iss,param_name,,”;iss>>param_value;params.insert({param_name,param_value})}
std::unordered_map<std::string, float> params;
std::ifstream myfile("mytext.txt");
std::string param_name;
float param_value;
while (std::getline(myfile, param_name, ',')) {
    myfile >> param_value;
    myfile.get(); // discard newline
    params.insert({ param_name, param_value });
}