文字マッチングの新しいスキーム-ワイド文字wchar_t

2069 ワード

c 99規格ではwchar_を追加t、つまり幅の広い文字、手間が省けて多くの木があって、1位の幅の広い文字は1つの漢字を保存することができます!
百科事典より抜粋:
charは8ビット文字タイプで、最大256文字しか含まれません.多くの外国語文字セットに含まれる文字数は256文字を超えており、char型は表すことができません.
wchar_tデータ型は一般に16ビットまたは32ビットであるが、異なるCまたはC++ライブラリには異なる規定があり、例えばGNU Libcがwchar_を規定するtは32ビット
[1],とにかくwchar_tが表す文字数はchar型をはるかに超えている.
標準C++のwprintf()関数とiostreamクラスライブラリのクラスとオブジェクトはwchar_を提供します.t幅文字タイプに関する操作.
次に、文字マッチングのプログラムを書いて、文字の各文字の出現回数を検索します.
//Vs2005      
#include 
#include 
#include 

using namespace std;

locale loc("chs");


int main()
{
	wchar_t wStr[] = L"    3                           ,                            ,        、      、                  ,           、    、    。  ,                      ,      、      ,           。";

	wchar_t wStr1[200] = L"";//      ,       
	int Textcount = 0, Dcount = 0;//                (            )
	float count[200] = { 0 };//         
	bool exist = false;//           
	for (int i = 0; i < 200; i++)
	{
		if (wStr[i] == L'\0')
		{
			Textcount = i;
			break;
		}
		for (int m = 0; m < 200; m++)
		{
			if (wStr[i] == wStr1[m])
			{
				count[m]++;
				exist = true;
				break;
			}
			if (wStr[m] == L'\0')
			{
				break;
			}
		}
		if (exist == false)
		{
			wStr1[Dcount] = wStr[i];
			count[Dcount]++;
			Dcount++;
		}
		exist = false;

	}
	wcout.imbue(loc);
	cout << "     :" << endl;
	wcout << wStr << endl;
	cout << "/" << endl;
	cout << "  " << Textcount << "  (    、  、  、  )" << endl;
	cout << "/" << endl;
	cout << "  " << Dcount << "     ,        :" << endl;
	cout << "/" << endl;

	for (int i = 0; i < 100; i++)
	{
		if (count[i] == 0)
		{
			break;
		}
		wcout << wStr1[i] << " :";
		cout << (int)count[i] << " " << "      :" << count[i]*100 / Dcount <