`
weihe6666
  • 浏览: 443082 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C++ strtok的用法

    博客分类:
  • C++
阅读更多
strtok的用法


函数原型:char *strtok(char *s, char *delim);
函数功能:把字符串s按照字符串delim进行分割,然后返回分割的结果。

函数使用说:

1.strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’\0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(2)要获得所有的分割单元必须反复调用strtok函数。

2.strtok函数以后的调用时的需用NULL来替换s.

3.形参s(要分割的字符串)对应的变量应用char s[]=”….”形式,而不能用char *s=”….”形式

    #include <stdio.h>

    #include <string.h>
    void  main()
    {
    char buf[]=”Golden Global View”;
    char* token = strtok( buf, ” “);
    while( token != NULL )
        {
            printf( ”%s “, token );
            token = strtok( NULL, ” “);
        }
    return 0;
    }

其结果为:

Golden
Global
View


其中第3条不知为何,我的理解是char *s 中的s保存的是字符串的首地址,它在内存中所分配的内存是连续的,但是超过字符串的长度后,其内存中的内容不可知;而char s[],它在内存中的分配也是连续的,但是超过字符串的长度后,其内存中的内容全部为'/0'。

例如
#include <iostream>
using namespace std;

int main()
{
    char *temp = "hewei";
	char Parms[6] = "hewei";
	int len = strlen(temp);
	int Temp_len = strlen(Parms);
	for(int i = 0; i< strlen(temp); i++)
	{
          cout << temp[i] << " " << Parms[i] << endl;
	}
	return 0;
}

其调试结果:
+		temp	0x00417800 "hewei"	char *
		Parms[8]	-52	char
+		&Parms[0]	0x0012ff4c "hewei"	char *
+		&Parms[1]	0x0012ff4d "ewei"	char *
+		&Parms[2]	0x0012ff4e "wei"	char *
+		&Parms[3]	0x0012ff4f "ei"	char *
+		&Parms[4]	0x0012ff50 "i"	char *
+		&Parms[5]	0x0012ff51 ""	char *
+		&Parms[6]	0x0012ff52 "烫烫烫烫烫"	char *
+		&temp[3]	0x00417803 "ei"	char *
+		&temp[4]	0x00417804 "i"	char *
+		&temp[5]	0x00417805 ""	char *
+		&temp[6]	0x00417806 ""	char *
+		&temp[7]	0x00417807 ""	char *
+		&temp[8]	0x00417808 ""	char *
		temp[6]	0	char
		temp[7]	0	char
+		temp	0x00417800 "hewei"	char *

分享到:
评论

相关推荐

    C++ strtok应用方式浅析

    在C++编程语言中,对于字符的处理,可以通过使用C++ strtok来进行具体的操作。那么正确的应用方法我们将会在这篇文章中为大家详细介绍,希望能对大家有所帮助,提高实际程序开发效率。

    C语言切割多层字符串(strtok_r strtok使用方法)

    但是,`strtok`内部使用了一个静态变量来保存当前状态,这导致了它的不可重入性,即当在一个多线程环境中或者被递归调用时,可能会出现不可预测的结果。 2. `strtok`的弱点: 在处理如“Fred male 25,John male 62,...

    C++ 字符串截取(strtok)

    ### C++ 中使用 `strtok` 进行字符串截取详解 在C++编程语言中,处理字符串是一项常见的任务。特别是在需要对字符串进行分隔、提取特定子串的...掌握了它的使用方法后,可以更高效地处理各种字符串相关的编程任务。

    C++中strtok()函数的用法介绍

    函数原型:char *strtok(char *s, const char *delim);Function:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。Description:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串...

    使用strtok函数截取字符串得到相应的子串存入数组中

    在C/C++编程中,`strtok`函数是一种常用的字符串处理工具,用于将字符串分割成多个子串。这个函数在处理复杂格式的数据时非常有用,比如解析包含多种数据类型的字符串。在给定的场景中,我们需要从一个字符串中提取...

    C++常用字符串分割方法实例汇总

    本文实例汇总了C++常用字符串分割方法,分享给大家供大家参考。具体分析如下: 我们在编程的时候经常会碰到字符串分割的问题,这里总结下,也方便我们以后查询使用。 一、用strtok函数进行字符串分割 原型: char *...

    c++实现字符串读取

    本文将详细探讨一种利用C++标准库函数`strtok`来实现以空格为分隔符的字符串读取方法,特别适用于处理包含空格的文件字符流。 #### 关键技术点 1. **`strtok`函数**:这是一个用于字符串分割的重要函数,能够根据...

    c++按行读写txt文件

    在C++中,通常使用`fstream`库来处理文件操作。`ifstream`类用于读取文件,而`ofstream`类用于写入文件。要逐行读取,我们可以创建一个`ifstream`对象,打开目标文件,然后使用`getline()`函数读取每一行。例如: `...

    C++_Builder的60个编程资料

    - **知识点**:详细介绍C++ Builder中VCL组件的使用方法。 - **示例代码**:不适用 #### 22. 实现简单的聊天程序 - **知识点**:基于C++ Builder构建一个基本的聊天程序。 - **示例代码**:不适用 #### 23. 图像...

    c++自己实现shell

    可以使用`std::string`类的方法,或者使用`strtok()`函数来完成。 2. **进程创建**:为了执行这些命令,我们需要创建子进程来运行相应的系统调用。这可以通过`fork()`函数实现,创建一个新的进程副本。然后在子进程...

    C++用类读取和处理TXT文件数据

    这可以通过使用`std::getline`读取整行,然后使用`std::stringstream`或`std::strtok`进行字段分割。最后,`processData`函数可以根据需求对数据进行进一步的处理,比如统计、计算或输出。 在指针处理方面,尽管...

    C语言/c++编写的计算器 含源码

    程序可能使用`fgets`或`getline`函数来读取用户输入的整行表达式,然后通过`strtok`或其他字符串处理函数进行解析。 5. 表达式求值: 计算器的核心部分是解析用户输入的数学表达式并求值。这可能涉及到栈数据结构...

    C++ 读取txt数据(带空格数据)测试数据

    然而,如果你知道确切的字段数量或者字段类型,还可以使用更高效的方法,如`std::vector`、`std::array`或其他容器存储数据。此外,如果数据量大或格式复杂,可以考虑使用更高级的库,如`Boost.Spirit`或`C++20`引入...

    用C++编写cmd命令行

    - 自定义字符处理函数,如分割字符串(根据特定分隔符切分),检查是否为命令关键字等,可以使用`std::stringstream`或`std::strtok`等函数。 3. **代码重用**: - 使用面向对象编程(OOP)设计模式,如封装、...

    深入学习C++_String

    #### 一、C++的string的使用 ##### 1.1 C++ string简介 在C++中,`std::string`是用于处理文本数据的标准库的一部分,它提供了丰富的功能来管理和操作字符串。与传统的C风格字符串不同,`std::string`是一个类,它...

    C Splitter easy mode_Splitter_C-C++_

    在C和C++中,虽然没有内置的方便方法来实现这个功能,但可以通过使用库函数和指针操作来实现。 描述"little splitter in C"指出这是一个小型的C语言实现,可能是一个简单的命令行工具或者库函数,用于将字符串按照...

    c++和c字符串表达的区别

    下面我们将逐一分析这些函数的特点和用法: 1. **`strcat()`:**用于将一个字符串连接到另一个字符串的末尾。例如:`strcat(a, c);` 这行代码的作用是将字符串`c`连接到字符串`a`的末尾。需要注意的是,目标字符串...

    AcceleratedC++中文版.zip

    这本书的独特之处在于它采用了一种加速学习的方法,旨在让初学者快速掌握C++的核心概念和编程技巧。以下是本书中涵盖的一些关键知识点: 1. **基础语法**:C++的基础始于其强大的语法结构。本书会介绍变量、数据...

Global site tag (gtag.js) - Google Analytics