MFC基础--CString的Tokenize()和_tcstok()的用法对比

Tokenize()和_tcstok()都是用来分割字符串的方法。但是其各自的使用还是有很多不同。

下面对字符串“%s111gdfafd%s\t023232%s\t1%s\t2%s\t3%s\t4%s\t0XFF0000%s\tfdas”用这两个函数都进行一些相同匹配分割处理,代码和结果对比如下:

Tokenize():

#include "stdafx.h"
#pragma once

#include <stdio.h>
#include <tchar.h>
#include <vector>
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 某些 CString 构造函数将是显式的

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // 从 Windows 头中排除极少使用的资料
#endif

#include <afx.h>
#include <afxwin.h>         // MFC 核心组件和标准组件
#include <iostream>//函数功能:按指定长度截取字符串前面的部分

int _tmain(int argc, _TCHAR* argv[], TCHAR* envp[])
{
    CString sBuf=_T(" %s111gdfafd%s\t023232%s\t1%s\t2%s\t3%s\t4%s\t0XFF0000%s\tfdac");
    CString Seperator = _T("1%s\t");
    int Position = 0;
    CString Token;

    Token = sBuf.Tokenize(Seperator, Position);
    while(!Token.IsEmpty())
    {
        // Get next token.
        Token = sBuf.Tokenize(Seperator, Position);//从iStart位置取出字符串中含pszTokens分割符间的内容;

        TCHAR* szTrunc = new TCHAR[Token.GetLength() + 1];//将结果保存在堆里
        _tcscpy(szTrunc,Token);//结果拷贝

        std::wcout<<szTrunc<<std::endl;

        if (_tcslen(szTrunc) > 0)
        {
            delete [] szTrunc;
        }

    }
    system("pause");
    return 0;
}

_tcstok():

#include "stdafx.h"
#pragma once
#include <stdio.h>
#include <tchar.h>
#include <vector>
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 某些 CString 构造函数将是显式的

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // 从 Windows 头中排除极少使用的资料
#endif

#include <afx.h>
#include <afxwin.h>         // MFC 核心组件和标准组件
#include <iostream>//函数功能:按指定长度截取字符串前面的部分

int _tmain(int argc, _TCHAR* argv[], TCHAR* envp[])
{
    CString str = _T("%s111gdfafd%s\t023232%s\t1%s\t2%s\t3%s\t4%s\t0XFF0000%s\tfdas");
    TCHAR seps[] = _T("1%s\t");
    TCHAR* token = _tcstok( str.GetBuffer(), seps );
    while( token != NULL )
    {
         //MessageBox( token, token, MB_OK );
        //MessageBox(_T("dfzdsas"));
        std::wcout<<token<<std::endl;
        token = _tcstok( NULL, seps );//这一句删去会导致无限循环
    }
    system("pause");
    return 0;
}

MFC基础--CString的Tokenize()和_tcstok()的用法对比

时间: 2024-10-10 14:40:29

MFC基础--CString的Tokenize()和_tcstok()的用法对比的相关文章

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

在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* en

MFC基础程序设计VS2015 最新03

视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK 一.数字(浮点数或整数)转为文字:a)如果转为窄字符字符串,sprintf函数很好用,浮点数都没问题:b)如果转为宽字符字符串,在MFC中CString::Format就可以实现了:c)wsprintf是Windows API,不支持浮点型格式输出:d)如果转为宽字符字符串,在WIN32中可以先用sprintf转为窄字符字符串:再调用MultiByteToWideChar的API函数转为宽字符字符串.e)_stpr

MFC 基础知识:对话框背景添加图片和按钮Button添加图片

很长时间没有接触MFC相关的知识了,我大概是在大二时候学习的MFC相关知识及图像处理,现在由于要帮个朋友完成个基于C++的程序,所以又回顾了下相关知识.的确,任何知识一段时间过后都比较容易忘记,但回顾起来还是很有印象的. 这篇文章主要是回顾以前的MFC基础知识,给对话框添加背景图片和给按钮button添加背景图片:希望此篇基础性文章对大家有所帮助!同时为下次做MFC相关知识提供点此时所想所感吧.内容比较简单,高手飘过~ 一. 对话框背景添加图片 首先通过VS2012创建MFC对话框应用程序,项目

MFC中cstring,string和char[]的相互转化

int 转 CString:CString.Format("%d",int);...............................string 转 CString CString.format("%s", string.c_str()); 用c_str()确实比data()要好. .......................................char* 转 CString CString.format("%s", cha

MFC基础--C++中的字符集(转自MSDN)http://msdn.microsoft.com/zh-cn/library/06b9yaeb(v=vs.90).

为国际市场开发应用程序的一个重要方面就是要适当地表示本地字符集.ASCII 字符集在 0x00 到 0x7F 的范围内定义字符.还有其他一些字符集(主要是欧洲字符),它们在 0x00 到 0x7F 的范围内定义与 ASCII 字符集相同的字符,还在 0x80 到 0xFF 的范围内定义了扩展字符集.因此,8 位的单字节字符集 (SBCS) 足以表示 ASCII 字符集以及许多欧洲语言的字符集.但是,一些非欧洲字符集(如日文汉字)包含许多单字节代码方案无法表示的字符,因此要求使用多字节字符集 (M

简析MFC中CString用作C字符串

MFC中CString是一个方便的字符串操作的类, 然而很多函数需要传递字符指针, 这就需要进行CString和普通字符串的转换. 1.CString用作C字符串常量. 直接使用强制类型转换即可, 如: [cpp] view plaincopy CString strSports(_T("Hockey is Best!")); TCHAR sz[1024]; lstrcpy(sz, strSports); 2.用作可修改字符串.要用传递字符指针的函数修改CString. 方法:使用成员

MFC基础程序设计VS2015 最新02

视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK 对于每个函数的帮助资料都应该详细阅读:a)简要说明:能够快速了解函数的功能:b)参数:每一个参数的功能都应该了解它的含义,并用不同种代入进行测试:c)返回值:返回值对于程序的开发往往有很微妙影响,应该注意了解其含义:d)备注(Remark):提供最详细和全面的说明.e)样例(Sample):演示代码能最快地让程序员掌握这个函数的用法.(有些函数必须是集群在一起联合使用才有作用) 1.Windows资源管理:a)资源

1.MFC基础

一.MFC的概念和作用 1.什么是MFC? 全称为Microsoft Fundation Class Library我们称之为微软基础类库 (1)从硬盘的存在形式来说MFC就是一个库(静态库) (2)从原理上来说MFC还是一个程序框架 2.为什么使用MFC? 基于框架编程提高工作效率,减少开发周期,降低开发成本 二.几个重要头文件 afx.h - 包含了绝大部分MFC库中的类和声明 afxwin.h - 包含了afx.h和windows.h afxext.h - 包含了关于扩展窗口类声明,例如:

mfc中CString转化为string的方法

LL(1)分析法实验的mfc做到最后因为CString转化为string的问题卡了一个多小时,也是惨,网上各种方法找过都不行.幸亏最后还是找到几行代码搞定了.特此mark一下. USES_CONVERSION; char* s_char = W2A(m_in); inString = s_char;