2016-09-26 192 views
0

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

#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

你应该做的是使用调试器来逐步执行代码,每次一行,看看它是如何在逻辑上执行每条指令,什么是在每一步的所有变量的值。一旦你这样做了,显示的代码中的明显错误应该是非常明显的。了解如何使用调试器是每个C++开发人员必备的技能。 –

回答

0
  • 应该清理一下输入缓冲区,因为函数getline冲不给你。

“inFile.open(fileName,std :: fstream :: in | std :: fstream :: out | std :: fstream :: trunc);”

删除“| std :: fstream :: out | std :: fstream :: trunc”,因为此标志在打开时清除输入文件的内容。

  • 为什么您尝试使用输入流作为INFILE输出流为另一个文件(输出文件)另一件事?

  • so删除标志: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; 
} 
+0

嗯,你知道我为什么没有打开输入文件信息,当我运行程序 – Arhuro

+0

你有什么输出?你有没有输入文件?你有什么信息? – Raindrop7

+0

我输入了输入文件和输出文件的名称。然后我的输出表示未能打开文件 – Arhuro