输入文件名并将文字读为

时间:2017-05-14 10:53:46

标签: c++ fstream readfile

我希望用户输入文件名,如果文件存在,则打印出文件的所有内容。

此时,未注释的代码会获取用户输入的文件的名称,例如。 example.txt并打印出文件的大部分(不是最后一个单词?)。我试图通过使用字符串(注释代码是尝试)来实现它,但显然它是不正确的。

我还想知道我是否可以自动将.txt添加到用户输入的末尾,以便控制台可以询问 - “我们应该找到关于”用户输入“数学”的更多信息,它将打开“数学”。 TXT“

以下是我的尝试:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;

int main() {


    char filename[50];
    //string getcontent;
    ifstream name;
    cin.getline(filename, 50);
    name.open(filename);

    if (!name.is_open()) {
        exit(EXIT_FAILURE);
    }

    char word[50];
    name >> word;
    while (name.good()) {
        cout << word << " ";
        name >> word;
    }

    //if (!name.is_open()) {
        //while (! filename).eof())
        //{
            //getline(name, getcontent)
            //cout << getcontent << endl;
        //}

        //exit(EXIT_FAILURE); //comes from cstdlib
    //}



    //}



    system("pause");
    return 0;
}

2 个答案:

答案 0 :(得分:0)

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;

int main() {

    string filename;
    string getcontent;
    ifstream name;
    cin >> filename;
    filename.append(".txt"); // add extension.
    name.open(filename);

    if (!name.is_open()) {
        exit(EXIT_FAILURE);
    }

    while (true)
    {
        getline(name, getcontent);
        if (name.eof()) break;
        cout << getcontent << endl;
    }

    return 0;
}

答案 1 :(得分:0)

我发现了这一点,它为我解决了一个稍微不同的问题,并且我还认为我可以提供帮助。这是在Windows中编码的。 (我是一个初学者,如果我犯了一些明显的错误,请原谅我)

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin;
int main()
{
    //char filename[50],word[50];
    string filename,word;
    //cin.getline(filename,50);
    getline(cin,filename);
    //strcat(filename,".txt");
    filename.append(".txt");
    fin.open(filename);
    if(fin.is_open())
        while(fin>>word)
            cout<<word<<endl;
    else
        cout<<"No such file"<<endl;
    return 0;
}