2011-07-12 68 views
1

我写这个函数,拷贝一个文件的内容到另一个。我在while循环中使用getline()函数。不知何故,编译器给我一个错误。你知道为什么吗? 这里是我的代码:函数getline()错误

#include<iostream> 
#include<cstdlib> 
#include <fstream> 

using namespace std; 

// Associate stream objects with external file names 

#define inFile "InData.txt" // directory name for file we copy from 
#define outFile "OutData.txt" // directory name for file we copy to 

int main(){ 
    int lineCount; 
    string line; 
    ifstream ins; // initialize input object an object 
    ofstream outs; // initialize output object 
    // open input and output file else, exit with error 

    ins.open("inFile.txt"); 
    if(ins.fail()){ 
     cerr << "*** ERROR: Cannot open file " << inFile 
      << " for input."<<endl; 
     return EXIT_FAILURE; // failure return 
    } 

    outs.open("outFile.txt"); 
    if(outs.fail()){ 
     cerr << "*** ERROR: Cannot open file " << outFile 
      << " for input."<<endl; 
     return EXIT_FAILURE; // failure return 
    } 

    // copy everything fron inData to outData 
    lineCount=0; 
    getline(ins,line); 
    while(line.length() !=0){ 
     lineCount++; 
     outs<<line<<endl; 
     getline(ins,line); 
    } 

    // display th emessages on the screen 
    cout<<"Input file copied to output file."<<endl; 
    cout<<lineCount<<"lines copied."<<endl; 

    ins.close(); 
    outs.close(); 
    cin.get(); 
    return 0; 

} 

谢谢您的帮助。

编辑:对不起,这里有错误: 1.“错误C3861:‘函数getline’:标识符找不到” 2.“错误C2679:二进制‘< <’:没有操作员发现它接受一个右手类型'std :: string'的操作数(或者没有可接受的转换)“

+4

不要让我们猜编译器错误 – antlersoft

+3

什么是确切的编译器错误和上线? – Nobody

+1

什么错误和哪行代码?我试着用ideone,它似乎编译得很好:http://ideone.com/BO7tY –

回答

10

一个问题是,您未包含<string>头文件,这是定义getline的地方。

+0

感谢您的帮助。 – GKED