C(string.h)字符串操作函数总结

strcpy:将“abc”复制到“def”,结果“def”变为“abc”。
strncpy:将“abc”的前2 个字符复制到“def”的前2 个字符,所得的“def”变为“abf”。
strcat:通过将“ab”添加到“cd”,“cd”变为“cdb”。
strlen:“你好”长度为5 strcmp:比较“abc”和“abd”并返回1 strchr:“abc”搜索“b”并返回指向“b”的指针。
strstr:“hello world”搜索“world”并返回指向“world”的指针。
atoi:“1 2 3 ”转换为int,结果为1 2 3
在未检查长度的情况下不要使用strcpy。
2 000年,发生特大洪涝灾害。
当它在线运行时,始终确保目标缓冲区足够大。

idl函数总结,最全攻略,一篇入门

IdL 是功能的总结。
字符串:strtrim 删除空格(示例:strtrim('text')='text')。
排序:插入一个整数数组(示例:insert(3 ,4 ) 创建一个 3 x4 整数数组)。
结构:{name, tag1 ... 创建一个结构(例如:{point, x, y})。
提示:ptr_new 创建一个指针(例如:ptr p=ptr_new())。
Loop:for循环for...(例如:for i=1 to 1 0 I will start print, i endfor)。
函数:函数返回一个值(示例:函数 sum(a,b) 返回 end+b)。
文件:openr 打开文件(例如:openr 'file.txt' u)。
图像:read_jpeg 读取 JPEG(例如:read_jpeg 'image.jpg')。
接口:实现widget_base接口(例如:widget_base w)。

实用建议:从您被指导的活动开始,并让实习生进行练习和类似的练习。

即学即记05-C++ String 使用总结(必要时用)

说实话,使用C++字符串类十年后,我已经越来越习惯它了。
关于自动内存管理,说实话,刚开始使用C风格字符串的时候,我总是对malloc和free感到困惑,这让我怀疑自己的人生。
我记得有一次我正在写一个项目。
为了管理几百个字符的字符串,我编写了一堆 if-else 来确定长度。
最后忘记释放,程序崩溃了。
转成字符串后?只需直接指定值,编译器就会自动为你分配和释放内存,省去你很多麻烦。

转换为 C 风格的字符串也很有趣。
我曾经编写过一个接口,需要将 C 风格的字符串传递给 C 库。
每次都要手动抄,写起来很累。
后来发现直接在c_str()中指定字符串就可以了,不太方便。
当然,当你从C风格的字符串中给一个字符串赋值时,编译器会自动为你转换它,这是相当聪明的。

在构造函数的上下文中,各种字符串确实可以省去很多麻烦。
我经常使用字面量初始化,比如std::string name = "张三",这比使用char arr[] = "张三"; 简单得多。
std::字符串名称(arr)。
还有std::string name("张三",1 ),只取最后一个字符,特别适合这样的场景需要拦截前缀。

老实说,在我看来,运算符重载是 C++ 字符串最令人惊奇的事情。
name1 + name2 直接链接,name="李思"直接赋值,不用关心底层实现是如何实现的。
这种直觉是非常有利的。
我有一个同事是C语言出来的。
刚开始写name1 =name1 +name2 的时候,他卡了很久,想知道为什么编译失败。
我直接说加号超载了,直接写name1 +=name2 或者(name1 =name1 +name2 )即可。
当时他就绿了。

就搜索方式而言,find和find是必不可少的。
我曾经写过一个日志分析工具。
我需要计算某个单词在文本中出现的次数。
我只是用 name.find("appear") != std::string::npos 来决定。
这比手动遍历要快得多。
我还使用了find_first_of和find_last_of。
例如,使用 find_first_of("\n ") 查找字符串中第一个空格或换行符的位置。
它特别适合解析固定格式的文本。

为了比较,以前用C风格的字符串比较的时候,总是要写strcmp的版本控制,strcmp(a, b) < 0>后来用字符串比较,直接从name1 .compare(name2 )开始,返回值正负零直接代表大小关系,代码看起来很干净。

就子串操作而言,substr是我用得最多的。
我记得有一次在处理 JSON 数据时,我收到了来自某个位置的消息。
需要提取特定的键,所以我简单地使用了 data.substr(key_start, key_length) 。
我还使用了名称插入和删除,例如 name.insert(1 , "小") 在名称中的第二个字符之前插入“小”,或 name.erase(1 , 1 ) 删除第二个字符。
这些操作比直接操作字符数组要直观得多。

但是说实话,字符串虽然好用,但是有时候还是要注意限制问题。
例如,使用substr时,如果索引输入错误或者长度过大,程序可能会崩溃。
我个人没有遇到过这方面的内存错误,但我知道潜在的问题,所以我写完后使用调试器看看是否有问题。

我记得1 0年前有一个项目统计。
当时使用C风格字符串的代码量比字符串多了4 0%左右,维护成本也高很多。
当然,现在编译器优化得越来越好,差别可能没那么大了,但我真的不想再回到那种直观的方便了。