cin、scanf、getline(cin,s)、cout、puts、printf的区别 以及string的一些函数
字符串的读入
有cin、fgets、getlin(cin,s) :
cin和scanf:遇到空格或换行会停下
fgets(/gets):读取一整行,包括空格
getline:如果是string类型的字符串需要使用getline(cin,s)
注意:读取字符串这类的只能是cin或者getline(cin,s),这两者的区别是cin不可以读取空格,getline可以读取到空格
字符串的输出
printf
cout
puts
注意printf输出string类型的时候需要printf(“%s”,s.c_str()) ; 来输出,必须加上.c_str()方法
字符串相关的函数和技巧
常用的字符串函数: 需要引入string.h
strlen(s)
strcmp(a,b) : 按照字典序进行比较 a<b 返回-1 a==b 返回0 a<b 返回1
strcpy(a,b) : 将b复制到a中
string s;
s.size() ; 返回string s的长度 (.size()方法的时间复杂度为O(1)的)。
s.empty()返回是否为空,0表示空,1表示不为空。
对于string类型的比较直接使用> < == 等符号进行比较即可,不需要strcmp这样的函数。
c++中对于string有一种特殊的遍历方式:
# include<iostream>
# include<cstdio>
# include<cstring>
using namespace std ;
int main()
{
string s = "hello world !" ;
// c++中一种独特的字符串的遍历方式 :
for(char c : s) cout << c << endl ;
// 若想要修改字符串中的某个字符就要使用:
for(char &c : s) c = 'a' ;
return 0 ;
}
size()和 strlen()一样的吧?
有没有区别呀?
.size()是string类的一个成员函数,strlen()是一个函数,要传参char*,应该还有其他的区别,自己百度一下吧,我也记不清了
膜拜膜拜