2016-07-17 38 views
-3

这是一个家庭工作问题,所以如果你不是我理解的那些人的粉丝。这里是我的代码:C++:无法将输入文件中的行复制到输出文件

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

int main() 
{ 
    fstream myfile1("datafile1.txt"); //this just has a bunch of names in it 
    fstream myfile2("cmdfile1.txt"); //has commands like "add bobby bilbums" 
    ofstream outputFile("outfile1.txt"); //I want to take the "add bobby" command and copy the name into this new file. 
    string line; 
    if (myfile1.is_open() && myfile2.is_open()) //so I open both files 
    { 
     if (myfile2, line == "add"); //If myfile2 has an "add" in it 
     { 
      outputFile.is_open(); //open outputfile 
      outputFile << line << endl; //input the line with add in it till the end of that line. 
     } 
    } 
    cout << "\nPress Enter..."; // press enter and then everything closes out. 
    cin.ignore(); 
    outputFile.close(); 
    myfile2.close(); 
myfile1.close(); 
return 0; 
} 

问题是,尽管outputFile总是空的。它从不将任何行从cmdfile1复制到输出文件中。有人知道我在这里失踪了吗?

+2

谁教你这样的:'如果(myfile2,行== “添加”);'? - 它实际上是一个有效的代码,但它似乎你不知道它在做什么 – WhiZTiM

+0

老实说,我试图从我在网上找到的研究和例子。我想我不知道它在做什么......我认为它会分析单词“add”的文件。 – Sammy

+0

你需要停止梦想。这段代码没有意义。最好咨询cppreference并获取[book](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – LogicStuff

回答

0

尝试一些更喜欢这个:

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
    ifstream myfile1("datafile1.txt"); 
    ifstream myfile2("cmdfile1.txt"); 
    ofstream outputFile("outfile1.txt"); 
    string line; 

    if (/*myfile1.is_open() &&*/ myfile2.is_open() && outputFile.is_open()) 
    { 
     while (getline(myfile2, line)) 
     { 
      if (line.compare(0, 4, "add ") == 0) 
      { 
       outputFile << line.substr(4) << endl; 
      } 
     } 
    } 

    myfile1.close(); 
    myfile2.close(); 
    outputFile.close(); 

    cout << "\nPress Enter..."; 
    cin.ignore(); 

    return 0; 
} 
+0

感谢您的帮助!你把我推向更好的方向! – Sammy