Chinaunix首页 | 论坛 | 博客
  • 博客访问: 52187
  • 博文数量: 9
  • 博客积分: 326
  • 博客等级: 一等列兵
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-16 05:57
文章分类
文章存档

2012年(2)

2011年(4)

2010年(1)

2009年(2)

我的朋友

分类: C/C++

2009-03-16 06:21:06

//utf-8全字符输出v1.0
//编译器:g++ 4.2.1 20070719 通过
//系统:freebsd 7.1r p2
//其他:系统编码设置为zh_CN.UTF-8
//运行方法:g++ -o sc sc.cpp ; ./sc > temp.text
//输出共
1112034个utf-8字符,空格之前的ascii码尽包含\t与\n
//如有发现错误请留言说明。

#include
using std::cout;using std::endl;
#include
  using std::string;
#include
  using std::vector;
//-----------------------------------------------------------------------------
int main(){
  string o("");
  vector v(0,"");
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  for(char a(9);a!=10+1;++a){o=a;v.push_back(o);}//空格与回车,长度2

  for(char a(32);a!=127;++a){o=a;v.push_back(o);}//空格到[DEL],长度95
  o=char(127);v.push_back(o);//1
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  //两位 1920个字
  for(char a(-61);a!=-32+1;++a){//%xC2-DF UTF8-tail
    for(char b(-127);b!=-64+1;++b){o.clear();o+=a;o+=b;v.push_back(o);}}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//三组
//UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
//         %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )

  //2048字
  for(char a(-31);a!=-31+1;++a){//%xE0 %xA0-BF UTF8-tail
    for(char b(-95);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}

  //49152
  for(char a(-30);a!=-19+1;++a){//%xE1-EC 2( UTF8-tail )
    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}

  //2048
  for(char a(-18);a!=-18+1;++a){//%xED %x80-9F UTF8-tail
    for(char b(-127);b!=-96+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}


  //8192
  for(char a(-17);a!=-16+1;++a){//%xEE-EF 2( UTF8-tail )
    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}


//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//四组
//UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
//         %xF4 %x80-8F 2( UTF8-tail )

  //196608
  for(char a(-15);a!=-15+1;++a){//%xF0 %x90-BF 2( UTF8-tail )
    for(char b(-111);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}

  //786432
  for(char a(-14);a!=-12+1;++a){//%xF1-F3 3( UTF8-tail )
    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}

  //65536
  for(char a(-11);a!=-11+1;++a){//%xF4 %x80-8F 2( UTF8-tail )
    for(char b(-127);b!=-112+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  cout << v.size() <
  o.clear();
  for(vector::iterator i(v.begin());i!=v.end();++i){o+=*i;}
  cout << o << endl;

return 0;}
//-----------------------------------------------------------------------------



下方是老贴~~没用了
//参考RFC 3629标准原帖参考的资料都太旧或是不准确,应参考如下之地址
//
//
//
//其他未说明的地方同原帖,本次还是没有完全验证
//程序输出中可能包含非utf-8字符,也可能未包含应有之字符
#include
#include
using std::string;using std::cout;using std::endl;//三个需要的命名空间
int main(){
    string str_value("");

    //生成部分ascii码,想要全范围将下行for循环的9与11改为0与32即可
    for(unsigned char a(9);a!=11;++a){str_value+=a;}//tab和回车
    for(unsigned char a(32);a!=128;++a){str_value+=a;}//空格到~后面的那个字符~
    str_value+="\n";//回车避免字符别全在一行

    //生成word字符//194-223(128-191)//双字节范围
    for(unsigned char a(194);a!=224;++a){//第一字节范围C2-DF
        for(unsigned char b(128);b!=192;++b){//最后字节范围80-BF
            str_value+=a;str_value+=b;}
    str_value+="\n";}//回车避免字符别全在一行

    //1生成三字节的字符//224,160-191(128-191)//三字节范围
    for(unsigned char a(224);a!=225;++a){
        for(unsigned char b(160);b!=192;++b){
            for(unsigned char c(128);c!=192;++c){
                str_value+=a;str_value+=b;str_value+=c;}
    str_value+="\n";}}//回车避免字符别全在一行

    //2生成三字节的字符//225-236(128-191*2)
    for(unsigned char a(225);a!=237;++a){
        for(unsigned char b(128);b!=192;++b){
            for(unsigned char c(128);c!=192;++c){
                str_value+=a;str_value+=b;str_value+=c;}
    str_value+="\n";}}//回车避免字符别全在一行

    //3生成三字节的字符//237,128-159(128-191)
    for(unsigned char a(237);a!=238;++a){
        for(unsigned char b(128);b!=160;++b){
            for(unsigned char c(128);c!=192;++c){
                str_value+=a;str_value+=b;str_value+=c;}
    str_value+="\n";}}//回车避免字符别全在一行

    //4生成三字节的字符//238-239(128-191*2)
    for(unsigned char a(238);a!=240;++a){
        for(unsigned char b(128);b!=192;++b){
            for(unsigned char c(128);c!=192;++c){
                str_value+=a;str_value+=b;str_value+=c;}
    str_value+="\n";}}//回车避免字符别全在一行


   //1生成double word字符//240,144-191(128-191*2)
   for(unsigned char a(240);a!=241;++a){//四字节范围
      for(unsigned char b(144);b!=192;++b){
         for(unsigned char c(128);c!=192;++c){
            for(unsigned char d(128);d!=192;++d){
               str_value+=a;str_value+=b;str_value+=c;str_value+=d;}
         str_value+="\n";}}}

   //2生成double word字符//241-243(128-191*3)
   for(unsigned char a(241);a!=244;++a){
      for(unsigned char b(128);b!=192;++b){
         for(unsigned char c(128);c!=192;++c){
            for(unsigned char d(128);d!=192;++d){
               str_value+=a;str_value+=b;str_value+=c;str_value+=d;}
         str_value+="\n";}}}

   //3生成double word字符//244,128-143(128-191*2)
   for(unsigned char a(244);a!=245;++a){
      for(unsigned char b(128);b!=144;++b){
         for(unsigned char c(128);c!=192;++c){
            for(unsigned char d(128);d!=192;++d){
               str_value+=a;str_value+=b;str_value+=c;str_value+=d;}
         str_value+="\n";}}}

    cout <return 0;}


//下方为原帖内容
//状态:未完全验证仅供思路参考欢迎拍砖
//编译器:g++ 4.2.1 20070719 通过
//系统:freebsd 7.1r p2
//其他:系统编码设置为zh_CN.UTF-8
//运行方法:g++ -o sc sc.cpp ; ./sc > temp.text
//相关知识参见:
//
//

//需要的两个头文件

#include
#include

using std::string;using std::cout;
using std::endl;//三个需要的命名空间


int main(){

    string str_value("");


    //生成部分ascii码
    str_value+=char(9);str_value+=char(10);//tab与回车

    for(unsigned char a(32);a!=128;++a){//空格到~

       str_value+=a;}

    str_value+="\n";//回车避免字符别全在一行


    //生成word字符

    for(unsigned char a(194);a!=224;++a){//第一字节范围C2-DF

        for(unsigned char b(128);b!=192;++b){//最后字节范围80-BF
            str_value+=a;str_value+=b;}
    str_value+="\n";}//回车避免字符别全在一行


    //生成三字节的字符

    for(unsigned char a(224);a!=240;++a){//第一字节范围E0-EF
        for(unsigned char b(128);b!=192;++b){//中段字节范围80-BF
            for(unsigned char c(128);c!=192;++c){//最后字节范围80-BF
                str_value+=a;str_value+=b;str_value+=c;}
    str_value+="\n";}}//回车避免字符别全在一行
/*

//生成double word字符,不过好像用不上的样子,先注释掉吧以后可能用到

for(unsigned char a(240);a!=245;++a){
   for(unsigned char b(128);b!=192;++b){
      for(unsigned char c(128);c!=192;++c){
         for(unsigned char d(128);d!=192;++d){
            str_value+=a;str_value+=b;str_value+=c;str_value+=d;}
      str_value+="\n";}}}
*/
    cout <

return 0;}

//utf-8全字符输出v1.0

#include
  using std::cout;using std::endl;
#include
  using std::string;
#include
  using std::vector;
//-----------------------------------------------------------------------------

int main(){
  string o("");
  vector v(0,"");
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  for(char a(9);a!=10+1;++a){o=a;v.push_back(o);}//空格与回车,长度2


  for(char a(32);a!=127;++a){o=a;v.push_back(o);}//空格到[DEL],长度95

  o=char(127);v.push_back(o);//1

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  //两位 1920个字

  for(char a(-61);a!=-32+1;++a){//%xC2-DF UTF8-tail

    for(char b(-127);b!=-64+1;++b){o.clear();o+=a;o+=b;v.push_back(o);}}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//三组

//UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /

// %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )


  //2048字

  for(char a(-31);a!=-31+1;++a){//%xE0 %xA0-BF UTF8-tail

    for(char b(-95);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}

  //49152

  for(char a(-30);a!=-19+1;++a){//%xE1-EC 2( UTF8-tail )

    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}

  //2048

  for(char a(-18);a!=-18+1;++a){//%xED %x80-9F UTF8-tail

    for(char b(-127);b!=-96+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}


  //8192

  for(char a(-17);a!=-16+1;++a){//%xEE-EF 2( UTF8-tail )

    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}


//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//四组

//UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /

// %xF4 %x80-8F 2( UTF8-tail )


  //196608

  for(char a(-15);a!=-15+1;++a){//%xF0 %x90-BF 2( UTF8-tail )

    for(char b(-111);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}

  //786432

  for(char a(-14);a!=-12+1;++a){//%xF1-F3 3( UTF8-tail )

    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}

  //65536

  for(char a(-11);a!=-11+1;++a){//%xF4 %x80-8F 2( UTF8-tail )

    for(char b(-127);b!=-112+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  cout << v.size() <

  o.clear();
  for(vector::iterator i(v.begin());i!=v.end();++i){o+=*i;}
  cout << o << endl;

return 0;}
//-----------------------------------------------------------------------------

//for(i(0);i!=;++i){}//switch(){case true:break;case false:break;}

//string::size_type//vector<>//&#

//utf-8全字符输出v1.0

#include
  using std::cout;using std::endl;
#include
  using std::string;
#include
  using std::vector;
//-----------------------------------------------------------------------------

int main(){
  string o("");
  vector v(0,"");
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  for(char a(9);a!=10+1;++a){o=a;v.push_back(o);}//空格与回车,长度2


  for(char a(32);a!=127;++a){o=a;v.push_back(o);}//空格到[DEL],长度95

  o=char(127);v.push_back(o);//1

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  //两位 1920个字

  for(char a(-61);a!=-32+1;++a){//%xC2-DF UTF8-tail

    for(char b(-127);b!=-64+1;++b){o.clear();o+=a;o+=b;v.push_back(o);}}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//三组

//UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /

// %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )


  //2048字

  for(char a(-31);a!=-31+1;++a){//%xE0 %xA0-BF UTF8-tail

    for(char b(-95);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}

  //49152

  for(char a(-30);a!=-19+1;++a){//%xE1-EC 2( UTF8-tail )

    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}

  //2048

  for(char a(-18);a!=-18+1;++a){//%xED %x80-9F UTF8-tail

    for(char b(-127);b!=-96+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}


  //8192

  for(char a(-17);a!=-16+1;++a){//%xEE-EF 2( UTF8-tail )

    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}


//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//四组

//UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /

// %xF4 %x80-8F 2( UTF8-tail )


  //196608

  for(char a(-15);a!=-15+1;++a){//%xF0 %x90-BF 2( UTF8-tail )

    for(char b(-111);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}

  //786432

  for(char a(-14);a!=-12+1;++a){//%xF1-F3 3( UTF8-tail )

    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}

  //65536

  for(char a(-11);a!=-11+1;++a){//%xF4 %x80-8F 2( UTF8-tail )

    for(char b(-127);b!=-112+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  cout << v.size() <

  o.clear();
  for(vector::iterator i(v.begin());i!=v.end();++i){o+=*i;}
  cout << o << endl;

return 0;}
//-----------------------------------------------------------------------------

//for(i(0);i!=;++i){}//switch(){case true:break;case false:break;}

//string::size_type//vector<>//&#

sss

//utf-8全字符输出v1.0

#include
  using std::cout;using std::endl;
#include
  using std::string;
#include
  using std::vector;
//-----------------------------------------------------------------------------

int main(){
  string o("");
  vector v(0,"");
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  for(char a(9);a!=10+1;++a){o=a;v.push_back(o);}//空格与回车,长度2


  for(char a(32);a!=127;++a){o=a;v.push_back(o);}//空格到[DEL],长度95

  o=char(127);v.push_back(o);//1

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  //两位 1920个字

  for(char a(-61);a!=-32+1;++a){//%xC2-DF UTF8-tail

    for(char b(-127);b!=-64+1;++b){o.clear();o+=a;o+=b;v.push_back(o);}}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//三组

//UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /

// %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )


  //2048字

  for(char a(-31);a!=-31+1;++a){//%xE0 %xA0-BF UTF8-tail

    for(char b(-95);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}

  //49152

  for(char a(-30);a!=-19+1;++a){//%xE1-EC 2( UTF8-tail )

    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}

  //2048

  for(char a(-18);a!=-18+1;++a){//%xED %x80-9F UTF8-tail

    for(char b(-127);b!=-96+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}


  //8192

  for(char a(-17);a!=-16+1;++a){//%xEE-EF 2( UTF8-tail )

    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){o.clear();o+=a;o+=b;o+=c;v.push_back(o);}}}


//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//四组

//UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /

// %xF4 %x80-8F 2( UTF8-tail )


  //196608

  for(char a(-15);a!=-15+1;++a){//%xF0 %x90-BF 2( UTF8-tail )

    for(char b(-111);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}

  //786432

  for(char a(-14);a!=-12+1;++a){//%xF1-F3 3( UTF8-tail )

    for(char b(-127);b!=-64+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}

  //65536

  for(char a(-11);a!=-11+1;++a){//%xF4 %x80-8F 2( UTF8-tail )

    for(char b(-127);b!=-112+1;++b){
      for(char c(-127);c!=-64+1;++c){
        for(char d(-127);d!=-64+1;++d){
          o.clear();o+=a;o+=b;o+=c;o+=d;v.push_back(o);}}}}
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  cout << v.size() <

  o.clear();
  for(vector::iterator i(v.begin());i!=v.end();++i){o+=*i;}
  cout << o << endl;

return 0;}
//-----------------------------------------------------------------------------

阅读(3093) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:乌克兰白鼠常用网址备忘

给主人留下些什么吧!~~