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;
}
6.