提问者:小点点

通过指针读取文件


我试图使用指针从一个文件中读取数据,但是在getline部分给出了错误,即“no instance of overloaded function”。 不知道该怎么做。。。

代码如下:

#include<iostream>
#include<fstream>
using namespace std;
void read(const char * const, char const *);
int main()
{
    char filename[20] = { "sentence.txt" }, data[50] = { '\0' };
    read(filename, data);
    return 0;
}

void read(const char * const ptr, char const * ptr2)
{
    ifstream file;
    file.open(ptr);
    if (!file.is_open())
    {
        cout << "File not found " << endl;
        exit(0);
    }
    else
    {
        while (!file.eof())
        {
            file.getline(ptr2, 49, ' ');
            cout << ptr2 << endl;
        }
        file.close();
    }
}

共2个答案

匿名用户

函数read已在C++库中定义:

https://en.cppreference.com/mwiki/index.php?title=特殊%3asearch&search=读取

您应该为您的函数使用一个不同的名称。

同样如注释中所写,常量char*char常量*是相同的。 它们是指向常量char的指针,不允许您修改char数组的内容。 您可能需要的是指向char的常量指针:

char * const

匿名用户

好吧,这只是一个简单的错误,我不敢相信我没看到。 星号应该在const之前,这样正确缩进应该是char*const ptr2,而不是char const*ptr2

叫我哑巴吧。