weichao さんのプロフィールweichao's homeフォトブログリスト ツール ヘルプ
    6月23日

    [zz]string to wstring

    unix下的汉字处理问题
    如何把一个汉字作为一个字符来处理?在以前,似乎比较麻烦,因为一个汉字一向是由2个
    字符来表示的。比较汉字,往往变成了字符串的比较。
    unicode出现之后,情况就好多了,每个汉字都有唯一的编码,从此汉字就可以作为单个字
    符来对待了。
    stl提供了string类来处理字符串,但是针对的是单字节字符串。如果想处理汉字,可以选
    择wstring。用法和string完全相同,但是处理的是宽字符。
    string到wstring之间的转换,似乎stl没有提供好的方法,所以还得用c的库函数来处理。
    以下给出一段代码,演示在unix下面,处理汉字的方法
    /*
    FileName: str2wstrdemo.cpp
    Compile command:aCC -AA +DD64 -I/opt/aCC/include_std str2wstrdemo.cpp -lstd_v2
    -lCsup_v2  -o 1
    */
    #include <iostream>
    #include <string>
    #include <list>
    #include <stdlib.h>
    #include <locale.h>
    using namespace std;
     
    int main()
    {
      int cnt;
      wchar_t wcs[100], wc;
      string myword="列表内容为:";
      setlocale(LC_CTYPE, "");  //很重要,没有这一句,转换会失败
      mbstowcs(wcs, myword.c_str(), 99);
      wstring newword(wcs);
      cout<<"string content is:"<<myword.c_str()<< endl;
      cout<<"wstring size is:"  <<newword.size()<<endl;

      return 0;
    }
     

    コメント

    しばらくお待ちください。
    入力されたコメントは長すぎます。短くしてください。
    何も入力されていません。もう一度やり直してください。
    現在、コメントを追加できません。後でもう一度やり直してください。
    コメントと書くには、保護者 (ほごしゃ) の方の許可 (きょか) をもらってください。許可をリクエストする
    保護者 (ほごしゃ) の方が、あなたがコメントを書けないようにしています。
    現在、コメントを削除できません。後でもう一度やり直してください。
    1 日に投稿できるコメントの最大数を超えました。24 時間経過してから、もう一度やり直してください。
    あなたが他のユーザーに対して迷惑行為を行っている可能性があると確認されたため、お使いのアカウントによるコメントの投稿を無効にしています。誤って無効にされたと思われる場合は、Windows Live のサポートにお問い合わせください。
    コメントを投稿する前に、以下のセキュリティ チェックを完了してください。
    セキュリティ チェックに入力する文字は、画像に表示されている文字または音声で流れた文字と一致していなければいけません。

    コメントを投稿するには、お使いの Windows Live ID でサインインしてください (Hotmail、Messenger、または Xbox LIVE を既に使用している場合は、そのアカウントが Windows Live ID です)。サインイン


    Windows Live ID をお持ちでない場合は、アカウントを新規登録してください。

    トラックバック

    この記事のトラックバックの URL は次のとおりです。
    http://weichao-zju.spaces.live.com/blog/cns!7F5CA80C6666EFA7!849.trak
    この記事を参照しているブログ
    • なし