对于学校实验室,我试图从文本文件中获取行并显示它们。
我的开始:
#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)
我不知道错误的原因。
答案 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
另外想要检查你需要编写逻辑的空间