关于字符串输入及在C和C++中的比较问题

C++中关于字符串问题

如何从键盘输入一串字符并存到字符串中

输入比较:
scanf():输入字符串时,碰到空格即判定为结束。
getchar():输入单个字符,会把回车和空格也当作字符(getchar()可以用在数字和字符混合时放在数字后面,避免数字后的回车键对程序产生影响,或者在程序结尾加上可避免结果闪退)
程序:
char a, b, c, d;
a = getchar();
b = getchar();
c = getchar();
d = getchar();
putchar(a);
putchar(b);
putchar©;
putchar(d);
此时输入a-回车-b-回车-c-回车-d-回车
结果:a=‘a’,b=’\n’,c=‘b’,d=’\n’,因为getchar()会把回车也当作字符。
gets():遇到空格不退出,遇到‘\n’才会结束(我感觉最好的输入字符串方法)
cin:遇到空格结束

比较

(1)头文件:
C:#include<string.h> 关于字符数组的函数定义的头文件
C++: #include< string> 此处是表示一个C++中的string类,和上面不一样,两者区别很大,编写代码时注意不要用混。

(2)字符串定义:
C:char a[N];
char* b;
C++: string c;
两种定义的东西不能混到一块:
比如此处的string类定义的c不能放在C语言中的strcmp()函数中;
char定义的a,b放在string(const char *s,unsigned int n)与string类的c放入含义不同。
示例:
程序:
string a = “abcdef”;
char b[] = “abcdef”;
string s1(a,3);
cout <<“s1=”<< s1 << endl;
string s2(b,3);
cout <<“s2=”<<s2 << endl;
结果:
s1=def
s2=abc

(3)字符串长度k
C:k=sizeof(b)/sizeof(char);
C++:k=a.size();

(4)某些函数功能比较:
复制(字符串a复制到字符串b)
C:strcpy(b,a);
C++:string b(a);
比较(字符串a与字符串b比较)
C:if(strcmp(a,b)==0);(还有一个stricmp()函数,比较两个字符串不区分大小写,strcmp()是区分大小写的)
C++: if(a == b);
拷贝字符串(将字符串b添加到字符串a后面)
C:strcat(a,b);
C++:a+=b;

C语言和C++中还有很多简单的函数,便于代码更快编写,如需了解更多C语言中关于字符串的函数和C++关于字符串的函数麻烦自行搜索。
本文主要讲一些C语言#include<string.h>头文件和C++中string类的一些区别。两种头文件使用时注意不要用混,看清定义方式以及函数运用是C中的还是C++中的。
有更多意见欢迎评论指正。

猜你喜欢

转载自blog.csdn.net/qq_46423166/article/details/104555638