`

《认清C++语言》のstd::stringstream和strstr

 
阅读更多

1std::stringstream的定义如下:

typedef basic_stringstream<char> stringstream;

它是basic_stringstream模板在char类型上的一个特化,使用该类型需要包含头文件<sstream>.

std::stringstream经常被用来将字符串和各种基本数据类型之间进行转换,功能类似于C标准库中的itoaatoi函数,但std::stringstream能做的事情更多,我们就从下面这个实例代码来进行学习吧:

#include <iostream>

#include <sstream>

int main()

{

std::stringstream asceStream;

std::string str("234");

//std::stringint

int asce;

asceStream << str; //先将str的值读入asceStream

asceStream >> asce;//再将asceStream中的值转为int型存入asce

std::cout<<"std::stringint"<<asce<<std::endl;

//char*int

asceStream.clear(); //再次输入前清空之前内容

char* chs = "123";

asceStream << chs;

asceStream >> asce;

std::cout<<"char*int"<<asce<<std::endl;

//std::stringdouble

asceStream.clear();

double asceD;

str = "23.4";

asceStream << str;

asceStream >> asceD;

std::cout<<"std::stringdouble"<<asceD<<std::endl;

system("pause");

return 0;

}

2strstr函数定义如下:

const char *strstr(

const char *str,

const char *strSearch

); // C++ only

它的作用是在字符串str中寻找字符串strSearch第一次出现的位置,如果找到就返回指针,否则返回NULL

实例代码如下:

#include <iostream>

int main()

{

char str[] = "lazy";

char string[] = "The quick brown dog jumps over the lazy fox";

char *pdest;

int result;

pdest = strstr(string, str);

result = (int)(pdest-string+1);

if(pdest != NULL)

std::cout<<"字符串"<<str<<"在字符串"<<

string<<"中的位置是:"<<result<<std::endl;

else

std::cout<<"找不到字符串"<<str<<std::endl;

system("pause");

return 0;

}

下面我们在来看看strstr函数的一个实现:

#include <iostream>

#include <assert.h>

const char* _strstr(const char* s1, const char* s2)

{

assert(s1 != NULL && s2 != NULL);

const char *p = s1;

const char *r = s2;

int len = 0; //保存字符串s2的长度¨

while(*p != '/0' && *r != '/0')

{

if(*p == *r)

{

len++;

p++;

r++;

} else {

len = 0;

p = ++s1;

r = s2;

}

}

if(*r == '/0')

return p-len; //减去s2长度,得到的是s2s1第一个字符指针

return NULL;

}

分享到:
评论

相关推荐

    C++_String

    #### 一、C++ 的 `std::string` 使用 ##### 1.1 C++ `std::string` 简介 在C++标准库中,`std::string` 类是用于处理文本数据的强大工具。它提供了比传统C风格字符串(`char *`)更多的功能和安全性。`std::string` ...

    C++字符串完全指引

    在C++中,有两种主要的字符串类型:C风格的字符数组(char[])和C++标准库中的std::string类。C风格字符串是以空字符'\0'结尾的字符数组,而std::string提供了一组方便的方法来操作和管理字符串。 1. C风格字符串 -...

    《C++String深入详解2.0版》PDF

    `std::string` 可以通过 C++ 的流机制进行输入和输出。 **1.7.1 C++ 流简介** C++ 流是一系列标准的输入/输出操作的封装,可以用于读写文本数据。 **1.7.2 `std::string` 与 `iostream`、`fstream`** `std::...

    c++数据结构字符串程序

    或者使用C++标准库中的`std::string`类,它提供了更高级别的功能和便利性: ```cpp std::string str = "Hello, World!"; ``` 字符串的比较通常通过`std::strcmp`函数(对于字符数组)或`std::string`的成员函数如`=...

    深入学习C++_String

    在C++中,`std::string`是用于处理文本数据的标准库的一部分,它提供了丰富的功能来管理和操作字符串。与传统的C风格字符串不同,`std::string`是一个类,它封装了所有关于字符串的操作,如长度计算、连接、子串提取...

    C++:CString转换

    MFC库中的`CString`类提供了方便的字符串操作,但在与标准C++库函数交互时,可能需要将其转换为`std::string`或`char*`等类型。本文将详细介绍如何在`CString`、`std::string`、`char*`、`char[]`、`int`和`float`...

    字符串的基本操作 vc++

    首先,C++标准库提供了两个主要的字符串类型:`std::string` 和 C 风格的字符数组(char[])。`std::string` 类型是C++的标准库容器,提供了丰富的成员函数,便于进行字符串操作,而C风格的字符数组则更加原始,需要...

    04 字符串(2).zip

    6. **连接操作**:将多个字符串合并成一个,Python中用`+`操作符,如`s1 + " " + s2`,C++中可用`+`或`std::stringstream`。 7. **查找与替换**:查找特定子串在字符串中的位置,Python有`find`或`index`方法,C++...

    c++字符串处理汇总

    在C++编程语言中,字符串处理是至关重要的一个部分,涉及到很多函数和方法。这篇总结主要涵盖C++中处理字符串的基本知识点,包括基本概念、常用函数、操作技巧以及一些编程思想。 1. **字符串基本概念** 在C++中,...

    字符串简介.ppt

    C++标准库提供了大量的函数和算法来支持这些操作,如`std::strcmp`进行精确比较,`std::strstr`查找子串,以及`std::transform`和`std::algorithm`进行字符串转换和处理。 此外,字符串在格式化输出和输入中也发挥...

    蓝桥杯c++-蓝桥杯竞赛练习之基础练习题字符串对比.zip

    在准备参加蓝桥杯竞赛的过程中,C++编程语言是重要的工具之一,特别是在基础练习题中,字符串对比是一项基本且至关重要的技能。本文将深入探讨C++中的字符串处理和比较,帮助参赛者提升在这个领域的理解与应用能力。...

    c语言中的string详解

    通过对C语言中的字符串处理技术及其与C++中`std::string`类的对比,我们可以看出,尽管C语言提供了强大的字符串操作功能,但C++的`std::string`类因其便利性和安全性,在现代软件开发中被广泛采用。掌握这两种不同的...

    VC中实现查找、替换字符串

    `std::string`是C++标准库中的一个类,它提供了一种方便的方式来存储、操纵和操作字符串。查找和替换操作可以直接通过`std::string`提供的成员函数完成: 1. **查找操作**:可以使用`find`函数来查找子串。例如,...

    C++读取到回车换行符问题处理

    std::string line; char c; while (std::cin.get(c) && c != '\n') { // 处理字符c } ``` 2. **自定义缓冲区**: 创建一个固定大小的缓冲区来存储输入,然后手动检查回车换行符。如果遇到,可以立即处理,...

    Windows via C_C++

    4. **C++异常**:C++语言提供了异常处理机制,通过throw和catch关键字来抛出和捕获异常,用于处理程序运行时的非正常情况。 5. **错误处理最佳实践**:如何设计良好的错误处理代码,包括错误码与异常的结合使用,...

    C\C++库函数大全

    3. 输入输出流:C++的IO流库(iostream)引入了`std::cin`、`std::cout` 和 `std::endl` 等对象,提供了面向对象的输入输出方式。 4. 异常处理:`try`、`catch` 和 `throw` 用于捕获和处理程序运行时可能出现的错误...

    cstring string char*的对比,使用,相互转换的介绍

    综上所述,`string`、`CString` 和 `char*` 在 C++ 中扮演着不同的角色。`string` 更适合作为通用字符串处理工具,而 `CString` 主要针对 MFC 和 ATL 环境。`char*` 作为传统 C 风格字符串处理方式,虽然功能有限但...

    C字符串与C++中string的区别详解

    在C++中,引入了名为`std::string`的类,它提供了更加便捷和安全的字符串操作。在C++中声明一个`string`对象,如`string name;`,可以直接对字符串进行赋值和操作,而无需预先指定长度。 C字符串在初始化时,通常...

    字符串检测VC

    - **查找与替换**:`strstr()`用于查找子字符串,`strchr()`找特定字符,`std::string`提供了`find()`和`replace()`方法。 - **分割与合并**:`strtok()`用于按分隔符拆分字符串,`std::getline()`读取一行并去掉...

Global site tag (gtag.js) - Google Analytics