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