假设有一个文本文件包含以下风格:
name: natalie, sarah
surname: parker
age: 24
contry: dubai
我希望natalie
和sarah
作为名称,parker
作为姓氏,依此类推。在此之后,在我的代码中的某处我需要变量名称,姓氏,年龄(如natalie,sarah,parker,24等...)。
我认为,首先我需要读取文件并将其存储在数组中,然后使用分隔符解析它:&#34; &#34;(空格)或&#34;:&#34;为了解析这个<surname: parker>
,还要使用&#34;,&#34;逗号作为分隔符以便解析<natalie, sarah>
。
我可以将文本存储在数组中,或者使用getline(textfile,size)来获取行,因为我每次只需要一行。你觉得哪个最合适?以及我们如何进行解析?
答案 0 :(得分:1)
你非常接近目标。我只是有一些建议:
:
之前的字符串获取键和值并将其存储在地图中。答案 1 :(得分:1)
使用正则表达式可以更轻松地解决问题。 这样的模式: “名称:([\ W,] +)姓氏(\ W +)”
答案 2 :(得分:0)
我可以想到这样的事情(简化;没有错误检查或优化等等;这是未经测试的,但应该有效):
std::ifstream file(myfile);
std::string line;
std::map<const std::string, std::string> dataset;
while (file >> line) {
size_t var_start = line.find_first_not_of(" \t"); // get beginning of the variable name
size_t var_end = line.find_first_of(":"); // get the end of the variable name
if (var_start == std::string::npos || var_end == std::string::npos) // any not found?
continue; // skip this line
std::string var_name = line.substr(var_start, var_end - var_start); // get the variable name
std::string var_value = line.substr(var_end + 1); // get the variable content
// now do something, e.g. safe it
dataset[var_name] = var_value;
}