1.字符串I/O
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<string> using namespace std; int main(){ char s[1000]; //cin>>s; scanf("%s",s);//读到空格/换行符结束输入,注意区别 //scanf("%s %s",s1,s2)//空格数固定已知也可以这样做 //ps:char s[]数组也可以循环一个个输入字符 cout<<s; //输出也可以用 printf("%s",s.c_str());//c_str()将string型转为字符数组输出 system("pause"); return 0; }
cin和cout在iostream头文件中,而不是stdio.h。
错误输出方法:printf("%s",s);
2.getline读空格
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<string> using namespace std; int main(){ string s; cin>>s; //getline(cin,s);//都可以,如果字符串有空格得用getline cout<<s; system("pause"); return 0; }
如果是char型数组str[100],也可以用getline:
char str[100]; cin.getline(str,100)
3.字符数组2种初始化
(1)和普通数组一样逐个赋值:char str[15]={'g','m','s'};
(2)直接通过字符串初始化(只有初始化可以,其他地方不能这样直接赋值整个字符串):
char str[15]="guomiansheng"
打印则用for循环逐个;printf("%c",str[i])
4.常用函数
有几个在string.h头文件下的常用的处理字符数组的函数:
(1)strlen()统计字符数组中第一个\0前的字符的个数;
(2)strcpy(字符数组1,字符数组2)是把字符数组2复制给字符数字1,注意这里的复制包括了结束符\0
(3)strcat(字符数组1,字符数字2)能把字符数组2接到字符数组1的后面。
5.string用scanf读时
在用scanf读取时,必须声明长度。不声明长度,直接scanf会出现运行时错误。
#include <stdio.h> #include <string> using namespace std; int main() { string a; a.resize(100); //需要预先分配空间 scanf("%s", &a[0]); puts(a.c_str()); return 0; }