简单I/O和string编程

作业2-3:文件in.txt中有多个整数,各个数字之间以空白字符分隔。请读出所有的数字,并转成16进制数据输出到另一个文件out.txt中。只需提交源文件 NumberConvert.cpp。

作业2-4:输入一段文字,其中包含一些非法的单词,请将这些非法单词删除或替换,然后输出过滤后的文字。只需提交源文件 Word.cpp。要求:程序格式规范,变量、函数命名合理,程序中应有必要的注释。

 

View Code
#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;

int main(){
    ifstream a;
    ofstream b;
    a.open("in.txt");
    b.open("out.txt");
    if(!a){
        cerr<<"NO!"<<endl;
        exit(0);
    }
    if(!b){
        cerr<<"NO!"<<endl;
        exit(0);
    }
    int n;
    b << hex;
    while(a>>n){
        b<< uppercase << n << '\n';
    }
    b<<flush;
    a.close();
    b.close();
    return 0;
}
View Code
#include <iostream>
#include <string>
using namespace std;

const int Max = 109;
string ou[Max];

int main() {
    cout << "请输入不合法的单词库,输入“#”结束" << endl;
    string ss;
    int size = 0;
    while(cin >> ou[size]) {
        if(ou[size] == "#")
            break;
        size++;
    }
    cout << "请输入一段文字,其中包含一些非法的单词,请将这些非法单词删除或替换,输入“#”结束" << endl;
    string ans;
    while(cin >> ss) {
        if(ss == "#")
            break;
        ans += ss;
        ans += " ";
    }
    int len = ans.size();
    for(int i = 0;i < size; i++){
        while(ans.find(ou[i]) < len){
            int pos = ans.find(ou[i]);
            ans.erase(pos,ou[i].size());
            len = ans.size();
        }
        ou[i].clear();
    }
    //以下为整理格式;防止两个单词之间有两个空格和去掉最后的结尾空格
    while(ans.find("  ") < len){
        int pos = ans.find("  ");
        ans.erase(pos,1);
        len = ans.size();
    }
    ans.resize(ans.size()-1);

    cout << ans << endl;
    ans.clear();
    return 0;
}

 

posted @ 2013-03-16 09:09  gray035  阅读(453)  评论(0编辑  收藏  举报