码迷,mamicode.com
首页 > 编程语言 > 详细

第9章《C++的输入和输出::习题【9.18】》

时间:2015-06-03 17:35:55      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:fstream   统计单词个数   文件流对象   

【9.18】编写一个程序,用于统计某文本文件中单词is的个数。

#include<iostream> 
#include <fstream> 

using std::cin;
using std::cout;
using std::endl;
using std::ios;
using std::ofstream;
using std::ifstream;

class File{
public:
    File();
    ~File();
    int search_is();

private:
    ofstream fout1;
    ifstream fout2;

};

File::File()  //建立一个文本文件
{
    ofstream fout1("text1.txt", ios::out);
    if (!fout1)
    {
        cout << "Cannot open output file.";
        system("pause");
        exit(1);
    }
    fout1 << "He has a girlfriend and he is a boy. ";//输入文本文件的内容
    fout1.close();  
}

File::~File()
{
    fout2.close();
}

int File::search_is()//打开文本文件,寻找is,统计is
{
    int f0 = 0, fi = 0, fs = 0;
    int sum = 0;
    char ch;

    ifstream fout2("text1.txt", ios::in);
    if (!fout2)
    {
        cout << "Error open file.";
        system("pause");
        exit(2);
    }
    //是单词is的条件为:i前是空格,i后是s,并且s后是空格
    while ((ch = fout2.get()) != EOF)
    {
        if (ch==‘ ‘)  //如果是空格
        {
            if (fs == 1)  //如果空格前是 is,
            {
                ++sum;
            }
            f0 = 1;    // 1表示是空格
            fs = 0;    //保持fs为0;
        }
        else
        {
            if (f0==1&&ch==‘i‘)  //如果是i,且前面有空格
            {
                fi = 1;
            }
            else if (fi==1&&ch==‘s‘)  //如果是s,且前面有空格和i;
            {
                fs = 1;
                fi = 0;
            }
            else if (fs==1)   //如果前面有空格和i和s,但s后不是空格
            {
                fs = 0;
            }
            f0 = 0;//重置f0;
        }
    }
    cout << "is的个数为: " << sum << "个" << endl;
    return 0;
}

int main()

{
    File fi;
    fi.search_is();

    system("pause");
    return 1;
}

技术分享
Question:
对于我建立的这个类,我觉得怪怪的,我想知道,如何建立: 要先写内容进文本,然后又要对此文本进行有关处理 的类,特别是关于这个类的构造函数怎么写

第9章《C++的输入和输出::习题【9.18】》

标签:fstream   统计单词个数   文件流对象   

原文地址:http://blog.csdn.net/jkelion/article/details/46348835

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!