码迷,mamicode.com
首页 > 其他好文 > 详细

MFC基础篇--CString的打印输出

时间:2014-06-28 13:41:37      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   get   2014   

    在MFC中经常用到CString类型。也会将其打印到黑窗口上。但是直接用printf或者直接用cout都是不行的。

    比如要截取字符串:“bsd_Progress\t0\t1\t2\t3\t4\t0XFF0000\tNil”之“\t”之间的字符串,当然结果为“0”,“1”,“2”,“3”,“4”,“0XFF0000”和"Nil"。可是直接用printf输出时候,代码和运行结果如下,并不尽如人意。

   

int _tmain(int argc, _TCHAR* argv[], TCHAR* envp[])
{
    CString sBuf=_T("bsd_Progress\t0\t1\t2\t3\t4\t0XFF0000\tNil ");
    CString Seperator = _T("\t");
    int Position = 0;
    CString Token;

    Token = sBuf.Tokenize(Seperator, Position);
    while(!Token.IsEmpty())
    {
        // Get next token.
        Token = sBuf.Tokenize(Seperator, Position);//从iStart位置取出字符串中含pszTokens分割符间的内容;
        printf("%s\n",Token);
    } 
    system("pause");
    return 0;
}

bubuko.com,布布扣

    然后,去网上查了一下,原来CString不能用printf,需要用cout。那就试试,

int _tmain(int argc, _TCHAR* argv[], TCHAR* envp[])
{
    CString sBuf=_T("bsd_Progress\t0\t1\t2\t3\t4\t0XFF0000\tNil ");
    CString Seperator = _T("\t");
    int Position = 0;
    CString Token;

    Token = sBuf.Tokenize(Seperator, Position);
    while(!Token.IsEmpty())
    {
        // Get next token.
        Token = sBuf.Tokenize(Seperator, Position);//从iStart位置取出字符串中含pszTokens分割符间的内容;
        std::wcout<<Token<<std::endl;
    } 
    system("pause");
    return 0;
}

    但结果却是一堆乱码:

    bubuko.com,布布扣

    后来发现,需要将CString转换成TCHAR*类型,才能够输出正确。

 1 int _tmain(int argc, _TCHAR* argv[], TCHAR* envp[])
 2 {
 3     CString sBuf=_T("bsd_Progress\t0\t1\t2\t3\t4\t0XFF0000\tNil ");
 4     CString Seperator = _T("\t");
 5     int Position = 0;
 6     CString Token;
 7 
 8     Token = sBuf.Tokenize(Seperator, Position);
 9     while(!Token.IsEmpty())
10     {
11         // Get next token.
12         Token = sBuf.Tokenize(Seperator, Position);//从iStart位置取出字符串中含pszTokens分割符间的内容;
13         
14         TCHAR* szTrunc = new TCHAR[Token.GetLength() + 1];//将结果保存在堆里
15         _tcscpy(szTrunc,Token);//结果拷贝
16 
17         std::wcout<<szTrunc<<std::endl;
18 
19         if (_tcslen(szTrunc) > 0)
20         {
21             delete [] szTrunc;
22         }
24     } 
25     system("pause");
26     return 0;
27 }

bubuko.com,布布扣O(∩_∩)O哈哈~ok

MFC基础篇--CString的打印输出,布布扣,bubuko.com

MFC基础篇--CString的打印输出

标签:style   blog   http   color   get   2014   

原文地址:http://www.cnblogs.com/xueniwawa/p/3798612.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!