如何在C ++中读取带空格的文件?

问题描述 投票:0回答:1

我上周开始在大学里上C ++课程。目前,我只知道一些C语言,这使我在学习C ++时有些困惑。我有这样的练习:“编写并使用fstream库来读取文本文件。该函数应在屏幕上将读取的每个文本行写在屏幕上(带空格)。”

我在下面编写了可以编写该行但没有空格的代码。我也听说过getline,但是我不知道如何使用它,编译器总是说“没有匹配的函数来调用getline”。

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

file_read(){
    ifstream origem;
    origem.open("ficheiro.txt");


    if (!origem) {
        cerr << "Error" << endl;
        return -1;
    }
char outp[100];

while(!origem.eof() ){
    origem >> outp;
    cout << outp;
    }

return 0;
}

例如:如果我在ficcheiro.txt中有“我的狗有骨头”,程序将把它写成“ Mydoghasabone”]

所以使用getline我尝试了这个:

...
    ifstream origem;
    origem.open("ficheiro.txt");


    if (!origem) {
        cerr << "Error" << endl;
        return -1;
}
    char outp[100];

    getline(origem, outp);
    origem >> outp;
    cout << outp;

    return 0;
}

编译器说:[错误]没有匹配的函数来调用'getline(std :: ifstream&,std :: char [100])'

我的问题是只读取包含空格的文件!


我在学习C ++时也遇到了一些麻烦,我开始学习“类”并使用CMD,甚至不知道自己在学什么。您知道我可以在哪里以更容易理解的方式学习C ++吗?

c++ fstream ifstream ofstream
1个回答
1
投票

尝试此

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int file_read()
{
    ifstream origem;
    origem.open("ficheiro.txt");


    if (!origem) {
        cerr << "Error" << endl;
        return -1; 
    }
    char outp[100];

   while( origem.getline(outp,100) )
        cout << outp;

return 0;
}

int main()
{
    file_read();
}

编译器说:[错误]没有匹配的函数来调用'getline(std :: ifstream&,std :: char [100])'

如果您想使用getline()将输出从char更改为类似字符串的字符串>

string outp;

while( getline(origem,outp))
    cout << outp;

因为getline()用于string

© www.soinside.com 2019 - 2024. All rights reserved.