来自文本文件错误的getline()

时间:2016-01-01 01:12:49

标签: c++ text getline

对于学校实验室,我试图从文本文件中获取行并显示它们。

我的开始:

#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <playlist.h>

using namespace std;

void readLine(vector<string> playlist);
int totalTime();
void displayData();

int main()
{
    vector<string> playlist;

    readLine(playlist);
    totalTime();
    displayData();

    system("pause");

    return 0;
}
void readLine(vector<string> playlist)
{
    string currentline;
    int i = 0;
    while (getline("Playlist.txt", currentline) && !empty(currentline))
    {
        getline("Playlist.txt", playlist[i]);
        i = i + 1;
    }
}
int totalTime() 
{

}
void displayData()
{

}

似乎我误用了getline?这两个&#34; getline&#34; s有错误的下划线说:

  

函数getline

     

错误:没有重载函数的实例&#34; getline&#34;匹配   参数列表参数类型是:(const char [13],std :: string)

我不知道错误的原因。

2 个答案:

答案 0 :(得分:5)

你没有错过getline函数,你错了。

getline需要std::istream&std::string&。您需要打开文件std::ifstream并将此流作为第一个参数传递。

见这里: http://www.cplusplus.com/reference/string/string/getline/

答案 1 :(得分:3)

像这样修改print "\\05" 函数,或者传递readLine()作为参考或返回playlist向量并将其移动到另一个向量中,因为除非您正在做某事从您的代码中playlist向量将丢失

playlist

这是因为您尝试查看的getline版本声明如此

vector<string> readLine(vector<string> playlist)
{
    ifstream fin;
    fin.open("Playlist.txt");
    if (!fin) { 
        cerr << "Could not open file Playlist.txt" << endl;
        exit(1);
    }

    string currentline;
    int i = 0;
    while (getline(fin, currentline) && !empty(currentline))
    {
        getline(fin, playlist[i]);
        i = i + 1;
    }

    return playlist;
}

这需要引用istream& getline (istream& is, string& str); 对象作为第一种类型,如果在此处看到继承层次结构http://www.cplusplus.com/reference/fstream/ifstream/?kw=ifstream,您将看到istream类型的对象继承自{{1} }}

注意:正如下面的评论所指出的,你所做的事情似乎并不正确。我不知道我是怎么错过这个的。但你所做的似乎是错的。如果你的目的是让ifstream向量存储文本文件中的所有非空行,你应该有一个这样的循环

istream

另外想要检查你需要编写逻辑的空间