从VS2013中VC++中具有多个部分的文件读取数据

read data from a file with multiple sections from VC++ in VS2013

本文关键字:文件 读取 数据 个部 VS2013 VC++      更新时间:2023-10-16

我需要从VS2013中的VC++读取txt文件。

在文件中,有多个部分:

 #section1
 head1,head2,head3
 dcscsa, sdew, safce
 .....
 #section2
 head1,head2,head3, head4,head5
 112,633,788,632,235
 .....

我需要将行保存到不同的数据结构中 对于第 1 节: 地图第1节>

  for section12
  mapSection2<string, map<string, int>>

我可以使用代码吗:

 string aLine;
 getline(file, aLine);
 stringstream ss(aLine);
 int cnt = 0;
 if (file.good())
 {
    while (!file.eof())
    {
        string substr;
        getline(file, aLine);
        stringstream ss(aLine);
        while (ss.good())
        {
            // how to save data to different map for different section?
        }

此外,我可以将整个文件加载到数据集中,然后在逐行读取文件时处理每一行或处理每一行。

哪一个更有效?

谢谢

我可以使用代码吗:...

差一点。

用:

int sectionNo = 0;
while (getline(file, aLine))
{
    if (aLine.empty()) continue;
    if (aLine[0] == '#')
    {
        ++sectionNo;
        getline(file, aLine); // read headings... use them if you like
        continue;
    }
    std::stringstream ss(aLine);
    switch (sectionNo)
    {
      case 1:
        if (ss >> a >> b >> c >> std::skipws && ss.eof())
            ... use a, b, c ...
        else
            throw std::runtime_error("invalid data in section 1 " + aLine);
        break;
      case 2:
        ...
}

此外,我可以将整个文件加载到数据集中,然后在逐行读取文件时处理每一行或处理每一行。

哪一个更有效?

几乎总是后者。