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

这个题目怎么优化?谢谢啦。

Theblueman 发布于 2018-05-24 13:25, 1722 次点击
题目:编写程序,定义文件流对象,将当前C++源程序作为读入文件,区分其中的字母和和其他字符,再分别写入两文件,再分别将文件中的信息显示在屏幕上。
程序代码:

amespace std;
const int SIZE=80;
int SUM=0;
int main()    {
    vector<char> Buffer1,Buffer2;
    int i;
    ifstream in("cout.cpp");
    in.seekg(0,in.end);
    int length=in.tellg();            //源文件大小
    in.seekg(0,in.beg);

    char* buffer;
    buffer=new char[length];
    in.read(buffer,length);
   
    for(i=0;i<length;i++)    {
        
        if(buffer[i]>='A'&&buffer[i]<='Z'||buffer[i]>='a'&&buffer[i]<='z')    {//数据分类
            SUM++;
            Buffer1.push_back(buffer[i]);
        }
        else Buffer2.push_back(buffer[i]);

    }
    delete[]buffer;

    ofstream out1("1.txt"),out2("2.txt");
    cout<<"1.txt:"<<'\n';
    for(i=0;i<SUM;i++){//写入文件1并输出
    out1.put(Buffer1[i]);
    cout<<Buffer1[i];
    }
    cout<<'\n'<<"2.txt:"<<endl;

    for(i=0;i<length-SUM;i++){//写入文件2并输出
    out2.put(Buffer2[i]);
    cout<<Buffer2[i];
    }

    ofstream ou1("1.txt"),ou2("2.txt");
   
    in.close();//关闭文件
    ou1.close();
    ou2.close();

    return 0;
}

2 回复
#2
Jonny02012018-05-24 23:43
可以用 istringstream 优化
建议详细查询其用法, 和 cin cout 差不多
另外建议存入 string 而不是 vector
#3
rjsp2018-05-25 09:12
你所谓的“优化”是指哪方面?执行效率 还是 可读性?

程序代码:
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

int main( void )
{
    ifstream file_a( "cout.cpp", ios_base::binary );
    ofstream file_b( "1.txt", ios_base::binary );
    ofstream file_c( "2.txt", ios_base::binary );

    typedef istreambuf_iterator<char> FileItor;
    for( FileItor itor=FileItor(file_a); itor!=FileItor(); ++itor )
        (isalpha(*itor) ? file_b : file_c).put( *itor );
}

1