XDOJ 1215-漢字を数える

987 ワード

Description
指定したテキストファイル内の漢字の個数を統計します.(中国語の記号も漢字として、データは中国語、英語以外の言語がないことを保証します)
Input
入力ファイルには、まず、テストインスタンスの個数を表す整数nが含まれ、次にnセグメントテキストが含まれます.
Output
各テキストについて、その中の漢字の個数を出力し、各テストインスタンスの出力は1行を占めます.
Sample Input
2
WaHaHa! WaHaHa! 今年の祝日は話をしないで共通語だけを話しますWaHaHa!WaHaHa!
もうすぐ期末試験だ
Sample Output
14
9
Hint
漢字機内コードの特徴から~
問題解決の考え方:
Description
漢字は2バイトで、最上位は1です.これを知っていれば、後のほうが簡単です.
#include<iostream>
#include<string>
using namespace std;

int cacHan(string str)
{
    int len = str.length();
    int sum = 0;
    for(int i=0;i<len;++i)
    {
        if(str[i]&128)
        {
            ++i;
            ++sum;
        }
    }
    return sum;
}
int main()
{
    int caseN;
    cin>>caseN;
    string str;
    getline(cin,str);
    for(int m=0;m<caseN;++m)
    {
        getline(cin,str);
        cout<<cacHan(str)<<endl;
    }
    return 0;
}