注册 登录
编程论坛 C++教室

文件流迭代器

fl8962 发布于 2014-05-29 06:03, 493 次点击
#include<iostream>
#include<string>
#include<fstream>
#include<iterator>
#include<algorithm>
using namespace std;
int main(void)
{
        ifstream file;
        file.open("12.21txt");
        if (!file)
        cout << "can not open a new file" << endl;
        ofstream rfile;
        rfile.open("12.21txt");
        istream_iterator<string> p(cin), eof;
        ostream_iterator<string> q(rfile," ");
        while (p != eof)
        {
                *p++=*q++;//这里有错误,请问具体是哪里错了。谢谢
        }

        return 0;
}
这里我希望将cin输入的内容输入到12.21txt文件当中。
3 回复
#2
rjsp2014-05-29 08:28
程序代码:
#include <iostream>
#include <string>
#include <fstream>
#include <iterator>
using namespace std;

int main(void)
{
    ofstream rfile( "12.21txt" ); // 我猜应该是 12.21.txt
    if( !rfile )
    {
        cerr << "can not open a new file.\n";
        return 1;
    }

    //ostream_iterator<string> q(rfile," ");
   
//for( istream_iterator<string> p(cin); p!=istream_iterator<string>(); ++q, ++p )
   
//    *q = *p;
   
// 以上三句可直接用std::copy实现
    std::copy( istream_iterator<string>(cin), istream_iterator<string>(), ostream_iterator<string>(rfile," ") );

    return 0;
}
#3
fl89622014-05-30 00:24
回复 2 楼 rjsp
为什么你这个for循环就可以用,而我的那个while循环就不可以呢?请问下我的那个是哪里错了?
#4
rjsp2014-05-30 08:15
你将 12.21txt 既以只读方式打开,又以只写方式打开
这还不是重点,重点是 *p++=*q++ 这一句,应该是 *q++ = *p++;
这种错误,你自己应该能看出来的
1