修复行数读取函数的语法
Fixing syntax of number of line reading function
我之前尝试制作一个程序,告诉用户文本文件中的字符数、单词数和行数。我创建了函数来确定每个函数的数量,但我是按值传递它们的。这导致了一个错误,因为在读取 char 的数量后,它将位于文件的末尾,然后为其他两个输出零。现在我似乎无法重写我的函数,以便每次检查字符、单词和行时打开和关闭文件。有人看到我的错误在哪里吗?谢谢! (现在只是复制并粘贴了我的一个功能)。
int num_of_lines(ifstream file)
{
string myfile;
myfile = argv[1];
ifstream l;
l.open(myfile);
int cnt3 = 0;
string str;
while(getline(file, str))cnt3++;
l.close();
return(cnt3);
}
int main(int argc, char **argv)
{
int num_of_char(ifstream file);
string file;
file = argv[1];
if(argc == 1)die("usage: mywc your_file");
ifstream ifs;
ifs.open(file);
if(ifs.is_open())
{
int a, b, c;
a = num_of_lines(ifs);
cout <<"Lines: " << a << endl;
}
else
{
cerr <<"Could not open: " << file << endl;
exit(1);
}
ifs.close();
return(0);
}
除了知道名称并创建一个新的 ifstream
之外,没有办法 "reopen" 文件,但是您可以使用 seekg
成员函数来设置您的读取位置文件,并将其设置为 0 将使下一个读取操作从文件的开头开始。
流无法复制,因此您不能传递它"by value",但必须通过引用传递它。
int num_of_lines(ifstream &file)
{
int count = 0;
string str;
while (getline(file, str)) {
count++;
}
file.seekg(0);
return count;
}
不过,对于整个问题,我同意 Mats Petersson 的观点。一次计算字符、行和单词的数量将比读取文件 3 次更有效。
我之前尝试制作一个程序,告诉用户文本文件中的字符数、单词数和行数。我创建了函数来确定每个函数的数量,但我是按值传递它们的。这导致了一个错误,因为在读取 char 的数量后,它将位于文件的末尾,然后为其他两个输出零。现在我似乎无法重写我的函数,以便每次检查字符、单词和行时打开和关闭文件。有人看到我的错误在哪里吗?谢谢! (现在只是复制并粘贴了我的一个功能)。
int num_of_lines(ifstream file)
{
string myfile;
myfile = argv[1];
ifstream l;
l.open(myfile);
int cnt3 = 0;
string str;
while(getline(file, str))cnt3++;
l.close();
return(cnt3);
}
int main(int argc, char **argv)
{
int num_of_char(ifstream file);
string file;
file = argv[1];
if(argc == 1)die("usage: mywc your_file");
ifstream ifs;
ifs.open(file);
if(ifs.is_open())
{
int a, b, c;
a = num_of_lines(ifs);
cout <<"Lines: " << a << endl;
}
else
{
cerr <<"Could not open: " << file << endl;
exit(1);
}
ifs.close();
return(0);
}
除了知道名称并创建一个新的 ifstream
之外,没有办法 "reopen" 文件,但是您可以使用 seekg
成员函数来设置您的读取位置文件,并将其设置为 0 将使下一个读取操作从文件的开头开始。
流无法复制,因此您不能传递它"by value",但必须通过引用传递它。
int num_of_lines(ifstream &file)
{
int count = 0;
string str;
while (getline(file, str)) {
count++;
}
file.seekg(0);
return count;
}
不过,对于整个问题,我同意 Mats Petersson 的观点。一次计算字符、行和单词的数量将比读取文件 3 次更有效。