输入文件不输出?对于循环

时间:2016-05-20 03:43:28

标签: c++ input printf

我被告知构建一个程序,每次文本文件包含' @'时必须输出该行。这是我的代码,它告诉必须有一个嵌套循环。为什么程序不打印文本文件?我做错了吗?谢谢!

#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;}
}

1 个答案:

答案 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());