Chinaunix首页 | 论坛 | 博客
  • 博客访问: 988513
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

2012年(158)

我的朋友

分类: C/C++

2012-11-23 16:23:55

#include
#include

int main( )
{
    using namespace std;
    {
        locale loc( "chs" );
        cout.imbue( loc );

        char str[] = "ABC";

        cout << str << " - ";
        use_facet< ctype >(loc).tolower( &str[0], &str[0]+sizeof(str)-1 );
        cout << str << endl;
    }
    {
        locale loc( "chs" );
        wcout.imbue( loc );

        wchar_t str[] = L"ABC";

        wcout << str << L" - ";
        use_facet< ctype >(loc).tolower( &str[0], &str[0]+sizeof(str)-1 );
        wcout << str << endl;
    }

   return 0;
}

在 VC++2005 中输出为:
ABC - ABC
ABC - abc
竟然不一样。

阅读(1004) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

网友评论2012-11-23 16:24:36

Alex
应该不算bug,是"ABC"字符串的问题,其在内存中为A3 C1 A3 C2 A3 C3,不清楚这个这个是什么编码。而ctype<char>是对一个个字节进行操作的,但发现每个字节都不是字母,也就没有什么tolower的操作了。