首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用C++将文件读入列表

使用C++将文件读入列表
EN

Stack Overflow用户
提问于 2014-04-09 00:05:23
回答 1查看 1.5K关注 0票数 1

我对使用文件输入/输出有点陌生,所以请容忍我。

我有一个名为RunList(filename)的函数,它将文件名作为输入,而不返回任何内容。该文件的格式将是有一行无用的,我计划使用忽略() on,然后下一行重要的是格式

"i 1 2 3 4 5.“

这些数字持续了很长一段时间,大约有250000人左右。

所以我想要做的是打开这个文件,忽略第一行,然后对文件中的每个数字使用函数void insert(x, p),这个函数是我定义的函数,用于在当前迭代器位置p之后插入x。最终的结果是,我想让我的列表包含文件中"i“之后的所有数字,并按相同的顺序排列。我还定义了函数ListItr find(x)ListItr first(),它们分别将迭代器返回到视图x和第一个药剂的位置。

有人能给我提供这样做的方法吗?我正在考虑使用for()循环,每次从文件中获取每个单词,并使用我的函数插入每个元素,但我对如何做到这一点有点不知所措,因为我说过我对使用文件输入/输出非常陌生。

因此,我的RunList函数目前看起来是这样的,尽管它显然没有完成,也没有真正工作,因此我需要一些帮助。

代码语言:javascript
运行
复制
    void Runlist(filename){
        ifstream in;
        in.open(filename); 
        in.ignore(1000, '\n');         //this is me trying to ignore the first line
        for (int i, i < 250000, i++){
            int number;
            in >> number
            void insert(number, i)
        }

}

但是计划是,我选择文件,忽略第一行,然后设置一个for循环,在这里我可以使用我的void ( number,i)来插入每个数字,但是我不知道如何一次读每个单词,或者保持顺序,因为如果我只是一遍又一遍地对每个数字使用这个函数,列表中的数字就会以我相信的相反顺序排列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 00:31:13

代码中有几个问题:

  • 没有为函数的返回类型指定void。
  • 使用getline一次,而不是忽略,只需在读取时删除第一行即可。
  • 您的for循环用法也非常无效:逗号而不是分号。
  • 没有初始化i,等等。
  • insert未显示,但您可能无论如何都可以使用追加,因为这似乎是您要做的。
  • 我也不是“迭代器”,所以您可能是指索引。
  • 在函数的中间有一个函数声明,而不是调用它。

这段伪代码将帮助您了解输入文件流类及其在C++中的用法:

代码语言:javascript
运行
复制
void Runlist(filename)
{
    ifstream in(filename, ifstream::in);
    in.getline(0, 1024);
    int number;
    while (in >> number)
        append(number);
    in.close();
}

免责声明:这个伪代码缺少正确的错误检查,等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22950496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档