std::string 使用

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

stl string 使用

1. 查找字符

std::wstring strData = L"<result>[北京市,上海市, 深圳市]</result>";
void DoF(const std::wstring &strData, std::list<std::wstring>& listDo)
{
	std::wstring strTarB = L"<result>[";
	std::wstring strTarE = L"]</result>";

	std::wstring::size_type nBeginTempB = 0, nEndTempB = 0, nBeginTempE = 0, nEndTempE = 0;

	nEndTempB = strData.find(strTarB, nBeginTempB);
	nEndTempE = strData.find(strTarE, nBeginTempE);

	if(nEndTempB != std::wstring::npos && nEndTempE != std::wstring::npos && nEndTempE > nEndTempB + strTarB.length())
	{
		std::wstring strTemp = strData.substr(nEndTempB + strTarB.length(), nEndTempE - nEndTempB - strTarB.length());
		std::wstring strSub;
		strTemp += L",";

		std::list<std::wstring>::iterator it;
		listDo.clear();
		std::wstring::size_type nBegin = 0, nEnd = 0;
		while( (nEnd = strTemp.find(L",", nBegin)) != std::wstring::npos)
		{
			strSub = strTemp.substr(nBegin, nEnd - nBegin);
			if(strSub.length() > 0)
			{
				listDo.push_back(strSub);
			}
			nBegin = nEnd + 1;
		}
	}
}

 

2. 替换字符串


stl 中的string只是提供了按照位置和区间的replace函数,而不能用一个string字串来替换指定string中的另一个字串.

 

void string_replace(std::string& strBig,const std::string & strsrc, const std::string &strdst)
{
	std::string::size_type pos = 0;
	while( (pos = strBig.find(strsrc, pos)) != string::npos)
	{
		strBig.replace(pos, strsrc.length(), strdst);
		pos += strdst.length();
	}
}
//使用
std::string strinfo="This is Winter, Winter is a programmer. Do you know Winter?";
//把strinfo中的所有"Winter"替换为"wende"
string_replace(strinfo,"Winter","wende");

 3. 在固定间隔内插入指定内容, 直到最后.

void FixedInsert(std::string& strData, int nStep, const std::string& strInsert)
{
	std::string::size_type nPos = nStep;
	while(nPos < strData.size())
	{
		strData.insert(nPos, strInsert);
		nPos += (nStep + strInsert.size());
	}
}


4. 判断字符串是否为数字

#include <string>
#include <sstream>

bool HYStringIsNum(const std::string& str)
{
	std::stringstream s(str);
	double t;
	char p;

	if(!(s >> t) || (s >> p))
	{
		return false;
	}

	return true;
}


 

IDA查看std::string的各种操作 相对C语言来说,C++中增加了很多特性,例如,构造函数、析构函数、异常处理等,因此,从汇编级别的语言看,C++就复杂很多。下面使用IDA工具查看std::string的一些操作背后的实现。以下程序在编译,g++版本为。std::string提供了更高层次的字符串操作,并且提供了很多的方法,与C风格字符串相比,使用起来更加方便,但是,在这些方法的底层,编译器默默做了很多事情。 阅读详情

相关推荐

C++ 字符串详解:从基础到进阶全面掌握 std::string

通过本篇文章,你已经了解了在 C++ 中的基本使用方法,以及如何在算法中高效应用字符串操作。希望这篇文章能帮助你从零开始掌握 C++ 字符串的相关技巧,并在实际编程中游刃有余。对于初学者来说,掌握这些基础操作、算法技巧和性能优化手段,可以帮助你在面对字符串相关的算法问题时,不仅能解决问题,还能编写出高效、优雅的代码。

m0_73147661的博客 1339

string的详细用法c++

是 C++ 中用于处理字符串的类,提供了丰富的成员函数和操作符来方便地操作字符串。以下是。

2301_80045122的博客 852

std::stringstd::string_view

std::stringstd::string_view核心区别:string拥有内存、可修改但拷贝成本高;string_view只是视图、只读但零拷贝。string适用于存储和修改字符串,而string_view最适合函数传参、只读操作等场景。关键规则:函数参数优先用string_view,存储变量必须用stringstring_view能显著提升性能(不分配内存、不拷贝),但需注意其不管理内存的特性,不能用于需要修改或长期保存字符串的场景。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 282

std::string详解

之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 标准模板库(STL)提供了一个std::strin

wuguangbin1230的博客 5万+

std::string简介及其使用

注:std::string C++11标准。 string概述 typedef basic_string<char> string;   字符串是表示字符序列的对象。  标准string使用类似于字节标准容器的接口提供对此类对象的支持,但是添加了专门用于操作单字节字符(single-byte characters)的字符串的特性。  string类是basic_s...

weixin_30511039的博客 1083

std::string用法总结

string类的构造函数: string(const char *s);    //用c字符串s初始化string(int n,char c);     //用n个字符c初始化 string类的字符操作: const char &operator[](int n)const; const char &at(int n)const; char &operator[](int n);

zenglichuanjia的专栏 899

std::string

拼接是指将多个 string_literals 连接成一个更长的 string_literal 的过程,不同的编程语言可能有不同的语法和规则。注意,这里的 "String"s 是一个 std::string 类型的 string_literal,因为它使用了 s 后缀。s 后缀是一个用户自定义的字面量 (user-defined literal),它可以将一个 const char* 类型的 string_literal 转换为一个 std::string 类型的 string_literal。

weixin_62486437的博客 2260

C++中std::stringstd::string_view使用详解和示例

是 C++ 标准库提供的字符串类,封装了动态管理的字符数组,功能比传统的 C 风格字符串(char*)更强大、安全、易用。<string>std是一个非拥有型的只读字符串引用,不分配内存、不复制数据,适用于传参和高效处理子串。功能需求建议使用动态字符串、读写操作只读子串、传参跨平台 Unicode 处理utf8cpp或ICUUTF-16 / UTF-32 字符。

qq_36812406的博客 1342

char * 和 std::string

实例代码如下图所示,s1 和 s2 均是常量字符串,字符串常量保存在只读数据区,是只读的,不能写,代码中注释的那两行代码会导致段错误。s3 是字符数组,字符数组是可以修改的,std::string 类型的字符串也是可以修改的。代码运行之后,可以看到 s1 和 s2 是常量字符串,这两个指针指向的地址也是相同的。从 s1,s2 的地址和 s3,s4 的地址对比可以看出,s3 和 s4 的地址相距比较近,和 s1、s2 的地址相距比较远。

weixin_38184628的博客 1688

std::stringstd::string_view区别

文章摘要: std::stringstd::string_view的核心区别在于存储方式和生命周期管理。std::string拥有独立内存(堆分配),可修改且安全;std::string_view仅作为轻量级只读视图(16字节),不管理内存但需注意原始数据生命周期。性能上,string_view零拷贝,适合参数传递和解析;string适合长期存储。ESP32开发建议:函数参数优先用string_view减少拷贝,持久化数据用string防悬空。典型场景如日志用string,HTTP头解析用string_v

qq_31385559的博客 582

在C++中std::stringstring有啥区别呀?

推荐使用:明确且安全,避免命名冲突。谨慎使用:虽然代码更简洁,但可能导致命名冲突,特别是在大型项目中。使用:只引入需要的类型,避免命名冲突。后面我又看见既然string是用std::string来的,那么有没有str::int函数?AI告诉我不存在str::int,因为C++中直接有int类型.

printfLILEI的博客 943

std::string用法

本文主要针对那些有C语言背景知识,而现在开始使用C++语言编程的程序员。事实上,C++继承了大多数C语言的功能,但有些方面还是不得不要留意的,如new和delete取代了malloc和free,且C++还使用了STL容器类来静态或动态地分配数组。本文中要讲的是用std::string来取代char*,将会演示C风格数组带来的一系列问题,及如何使用std::string来避免这些问题。避免“病态”的

菜鸟的专栏 2万+

【C++基础】std::string详解

std::string 是 C++ 标准库提供的用于处理字符串的类。它在 头文件中定义。std::string 提供了一种灵活、高效的字符串表示方式,相比于 C 语言中的字符串表示(使用字符数组或指针),std::string 更易于使用,更安全,并且提供了许多便捷的操作。

2201_75772333的博客 1万+

char[]与std::string的联系

C++中的C风格字符串(char[])和std::string分别代表传统与现代的字符串处理方式。C风格字符串是固定长度的字符数组,依赖空字符结尾,需要手动管理内存和边界检查,易引发缓冲区溢出等问题。std::string作为标准库类,封装了动态内存管理,提供安全的边界检查和便捷的操作方法,但会带来微小性能开销。 适用场景对比:C风格字符串适合与C API交互、性能敏感代码和固定长度文本;std::string更适合动态文本处理、复杂字符串操作和跨模块数据传输。现代C++开发中应优先使用std::strin

qq_39980997的博客 811

std string详解

std string详解

qq_44894420的博客 4268

std::string转换成std::wstring

的大小因平台而异:在Windows上通常为2字节(UTF-16编码),在Linux上多为4字节(UTF-32编码)。转换过程涉及UTF-8的变长编码规则:1字节表示ASCII字符,2-4字节表示其他Unicode字符。是一个转换facet,负责将UTF-8的多字节序列解码为宽字符。它支持UTF-8到宽字符的转换,代码简洁且安全。使用标准化的UTF-8解码算法,跨平台一致性好,性能稳定。采用的编码,2字节表示大部分字符,4字节表示增补平面字符。可变长编码,1字节表示ASCII,中文字符通常为3字节。

weixin_40468982的博客 1381

std::string_view 与 std::string

std::string_view 与 std::string

深耕嵌入式领用多年, 致力于分享嵌入式领域技术! 1017
上一篇: vc 创建线程
下一篇: Java 调用MySQL存储过程配置与调用
小大小丑
博客等级 码龄18年 483粉丝 425原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值