我被告知构建一个程序,每次文本文件包含' @'时必须输出该行。这是我的代码,它告诉必须有一个嵌套循环。为什么程序不打印文本文件?我做错了吗?谢谢!
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main ()
{
ifstream fin;
string I;
string D="filecontainingemails.txt";
cout <<"Enter input filename [default: fileContainingEmails.txt]: ";
getline (cin, I);
fin.open(I.c_str());
if (I.empty())
{I=D;}
while (true)
{
if (!fin.good()) break;
string linefromfile;
getline(fin, linefromfile);
for (int i=0; i<linefromfile.length(); i++)
{
if(linefromfile[i] == '@')
cout << linefromfile <<endl;
}
}
fin.close();
string J;
string E="copyPasteMyEmails.txt";
cout <<"Enter output filename [default: copyPasteMyEmails.txt]: ";
getline (cin, J);
if (J.empty())
{J=E;}
}
答案 0 :(得分:0)
这些代码行:
cout <<"Enter input filename [default: fileContainingEmails.txt]: ";
getline (cin, I);
fin.open(I.c_str());
if (I.empty())
{I=D;}
目前您从用户那里获得了一个文件名,然后尝试打开它。之后,如果用户输入了空字符串,则更改文件名。这已经太晚了,因为打开的文件已经失败了。
将文件打开后,将其更改为默认值。把它改成这样的东西:
cout <<"Enter input filename [default: fileContainingEmails.txt]: ";
getline (cin, I);
if (I.empty())
{I=D;}
fin.open(I.c_str());