【问题标题】:Inserting values from a file to a function using c++使用 C++ 将值从文件插入到函数中
【发布时间】:2013-05-07 04:39:45
【问题描述】:

我正在尝试从每行都有一个数字的文件中获取数字。

3
7
8
5
2
1

并将整数从文件插入到我的代码中称为 insert() 的函数中。

这就是我所拥有的:

   int main()
    {   ifstream myfile;
        myfile.open("numbers.txt");
        while(!myfile == EOF)
        {
            myfile.getline(myfile,1000000);
            insert(myfile);
        }
        myfile.close();


display();
return 0;
}

我收到此错误聚合“std::ifstream myfile”的类型不完整且无法定义。

【问题讨论】:

  • 需要在文件开头加上#include <fstream> using namespace std;
  • 读取文件时数字是字符串还是整数?

标签: c++ file-io


【解决方案1】:

你需要添加

#include <fstream>
using namespace std;

在文件的开头。

编辑:另外,您正在调用insert(myfile);,其中myfile 的类型为ìfstream,但您对insert 的定义是void insert(int)

【讨论】:

  • 我添加了 我在插入(myfile)处收到错误,这是从 'void*' 到 'int' 的无效转换
【解决方案2】:

myfile.getline(myfile,1000000);

这应该如何工作?我们来看看DOCUMENTATION中函数的签名:

istream&amp; getline (char* s, streamsize n );

istream&amp; getline (char* s, streamsize n, char delim );

函数希望你给它一个 char 指针 s 和数组 n 的大小,你给它一个 ifstream myfile 和一个非常大的随机 int。

创建一个数组用于临时存储读取行

char line[99];

然后将其传递给函数。

myfile.getline(line,99);


您的void insert(int d) 也接受整数,并且您正在尝试将 fstream 对象传递给它。你可以保持这样,但你必须先将字符串转换为 int。试试atoi()

【讨论】:

  • 我只是想弄清楚如何在使用 insert() 时让它遍历文件并将其插入到链表中,但不确定。我可以使用 atoi() 将字符串转换为整数吗?
  • @brooklynchick 是的,当然。从文件中提取行,然后从中提取整数。
  • 我对上面的帖子进行了非常重要的编辑。将 char 数组传递给函数时,您还应该将其大小作为第二个参数传递。如果有帮助,请接受答案;)
猜你喜欢
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
相关资源
最近更新 更多