失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > c++中string和c语言string用法总结

c++中string和c语言string用法总结

时间:2024-05-25 17:29:45

相关推荐

c++中string和c语言string用法总结

实例引出:

这个一个字符变换的题目:需要把输入的含有Q加数字的变为对应的Text+个数的形式:

输入样例为:

abddaQ123werQ1234

输出为:abddaText1werText2

我在编写的过程中遇到这些问题:1)用scanf和printf输入输出string时程序奔溃。2)用strcat连接2个字符串程序崩溃。(没用string.h时,程序报错,因为strcat为c语言方法)。

总结:c++中的string是不以’/0’结尾,相对于一个无穷的char型。故不能用scanf和printf,c语言和c++中的string方法不是公用的,需要区别对待。

#include

#include<stdio.h>

#include<string.h>

#include

using namespace std;

int main() {

int number;

while(1){

string d;

cin>>d;

char *p=&d[0];

int k=0;

number=1;

char b[10];

sprintf(b,"%s%d",“Text”,number);

string store;

while(k<d.length()){

if(*p==‘Q’){

p++;

k++;

while(*p>=‘0’&&*p<=‘9’){

p++;

k++;

}

store+=b;

number++;

sprintf(b,"%s%d",“Text”,number);

}

store+=*p;

p++;

k++;

}

cout<<store<<endl;

*p=0;

}

return 0;

}

#c++中string和c语言string用法总结

#include <string.h> //c语言的头文件

#include using namespace std;//c++语言的头文件,必须加命名空间。

##c++中的string

1.声明一个C++字符串: string Str;

C++中的string相当于一个类,有构造函数和析构函数。

2.字符串操作函数

string相当于STL中的容器一样,其很多操作可以用STL中的方法操作:如++,=,push_back()。其具体操作函数如下:

a) =,assign() //赋以新值

b) swap() //交换两个字符串的内容

c) +=,append(),push_back() //在尾部添加字符

d) insert() //插入字符

e) erase() //删除字符

f) clear() //删除全部字符

g) replace() //替换字符

h) + //串联字符串

i) ==,!=,<,<=,>,>=,compare() //比较字符串

j) size(),length() //返回字符数量

k) max_size() //返回字符的可能最大个数

l) empty() //判断字符串是否为空

m) capacity() //返回重新分配之前的字符容量

n) reserve() //保留一定量内存以容纳一定数量的字符

o) [ ], at() //存取单一字符

p) >>,getline() //从stream读取某值

q) << //将谋值写入stream

r) copy() //将某值赋值为一个C_string

s) c_str() //将内容以C_string返回

t) data() //将内容以字符数组形式返回

u) substr() //返回某个子字符串

v)查找函数

w)begin() end() //提供类似STL的迭代器支持

x) rbegin() rend() //逆向迭代器

y) get_allocator() //返回配置器

3.1 C++字符串和C字符串的转换

C ++提供的由C++字符串得到对应的C_string的方法是使用data()、c_str()和copy(),其中,data()以字符数组的形式返回字符串内容,但并不添加’/0’。c_str()返回一个以‘/0’结尾的字符数组,而copy()则把字符串的内容复制或写入既有的c_string或 字符数组内。C++字符串并不以’/0’结尾。我的建议是在程序中能使用C++字符串就使用,除非万不得已不选用c_string。

3.输入输出操作

1.>> 从输入流读取一个string。

2.<< 把一个string写入输出流。

另一个函数就是getline(),他从输入流读取一行内容,直到遇到分行符或到了文件尾。

##c语言的string.h

1.strcpy函数

原型:strcpy(str1,str2);

功能:将字符串str2复制到字符串str1中,并覆盖str1原始字符串,可以用来为字符串变量赋值,返回str1

2.strncpy函数

原型:strncpy(str1,str2,n);

功能:将字符串str2中的前n个字符复制到字符串str1的前n个字符中,返回str1

3.strcat函数

原型:strcat(str1,str2);

功能:将字符串str2添加到字符串str1的尾部,也就是拼接两个字符串

原型2:strncat(str1,str2,n);

功能2:将字符串str2的前n个字符添加到字符串str1的尾部,返回str1

4.strlen函数

原型:strlen(str1);

功能:计算字符串str1的长度,一个int值

5.strcmp函数

原型:strcmp(str1,str2);

功能:比较两个字符串,如果两个字符串相等,则返回0;若str1大于str2(对于大于的理解,是指从两个字符串的第一个字符开始比较,若两个字符相同,则继续比较,若发现两个字符不相等,且str1中该字符的ASCII码大于str2中的,则表示str1大于str2),返回一个正数(这个正数不一定是1);若str1小于str2,返回一个负数(不一定是-1);若字符串str1的长度大于str2,且str2的字符与str1前面的字符相同,则也相对于str1大于str2处理

原型2:strncmp(str1,str2,n);

功能2:比较两个字符串的前n个字符

原型3:stricmp(str1,str2); (在Windows中使用stricmp,在Linux中使用strcasecmp)

功能3:忽略两个字符串中的大小写比较字符串,也就是对大小写不敏感

6.strchr函数

原型:strchr(str,c);

功能:在str字符串中查找首次出现字符c的位置(从字符串的首地址开始查找)

原型2:strrchr(str,c);

功能2:在字符串str中从后向前开始查找字符c首次出现的位置

原型3:strstr(str1,str2);

功能3:在字符串str1中查找字符串str2的位置,若找到,则返回str2第一个字符在str1中的位置的指针,若没找到,返回NULL

返回:字符c的位置的指针,若没有查找到字符c,则返回空指针NULL

7.atoi、atof、atol函数

atoi(str); //字符串转换到int整型

atof(str); //字符串转换到double浮点数

atol(str); //字符串转换到long整形

————————————————

版权声明:本文为CSDN博主「深山里的小白羊」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:/qq_33757398/article/details/81212618

————————————————

版权声明:本文为CSDN博主「zhenzhenjiajia888」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:/superna666/article/details/52809007/

如果觉得《c++中string和c语言string用法总结》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。