输入和输出文件

时间:2016-09-26 00:20:03

标签: c++

我正在尝试创建一个新的输入文本文件并读取它的内容并写入我的输出文件。事情是我尝试了很多东西,有人可以解释我应该怎么做我的代码。我能改变的一切。

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

int main()
 {
    string fileName,fileName2,text;
    cout << "Please enter file name fo input: ";
    getline(cin ,fileName);
    cout << "Please enter file name for output: ";
    getline(cin, fileName2);
    ofstream output(fileName2,ios_base::app);
    std::fstream inFile;
    inFile.open(fileName, std::fstream::in | std::fstream::out | std::fstream::trunc);
    getline(inFile, text);
    while(inFile)
    {
        inFile >> text;
    }
    output << text;
    output.close();
    inFile.close();
    return 0;
 }

1 个答案:

答案 0 :(得分:0)

  • 你应该清理输入缓冲区,因为getline不会为你冲洗它。

&#34; inFile.open(fileName,std :: fstream :: in | std :: fstream :: out | std :: fstream :: trunc);&#34;

删除&#34; | std :: fstream :: out |的std :: fstream的:: TRUNC&#34;因为此标志在打开时清除输入文件的内容。

  • 另外一个原因是你尝试使用输入流inFile作为另一个文件(输出文件)的输出流?

  • 所以删除flags:ios :: trunc和ios :: out,因为你只想打开第一个文件进行阅读。

你的程序应该如下:

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

int main()
 {
    string fileName, fileName2, text;

    cout << "Please enter file name fo input: ";
    getline(cin ,fileName);
    cin.ignore(1, '\n');

    cout << "Please enter file name for output: ";
    getline(cin, fileName2);
    cin.ignore(1, '\n');

    ofstream output(fileName2.c_str(), ios_base::app);

    std::fstream inFile;
    inFile.open(fileName.c_str(), std::ios::in);

    if(!inFile)
        cout << "Failed to open input file!" << endl;
    while(getline(inFile, text) )
    {
        output << text;
    }


    output.close();
    inFile.close();
    return 0;
 }
相关问题