字符串输入输出
getchar()与putchar()
#include <iostream>
//#include <cstring>
using namespace std;
int main()
{
char a;
a = getchar();
putchar(a);
putchar('\r');
while (a = getchar())
{
putchar(a);
putchar(' ');
}
}
两种输入方式
scanf("%c",&x); 只读取一个字符
scanf("%s",&x);遇到空格,换行才会停止
cin与scanf("%s",&x)的作用大致相同
C:
char st[100];
1. 字符串长度
strlen(st);
2. 字符串比较
strcmp(st1,st2);
strncmp(st1,st2,n); 把st1,st2的前n个进行比较。
3. 附加
strcat(st1,st2);
strncat(st1,st2,n); n表示连接上st2的前n个给st1,在最后不要加'\0'。
4. 替换
strcpy(st1,st2);
strncpy(st1,st2,n); n表示复制st2的前n个给st1,在最后要加'\0'。
5. 查找
where = strchr(st,ch) ch为要找的字符。
where = strspn(st1,st2); 查找字符串。
C++:
string str;
1. 字符串长度
len = str.length();
len = str.size();
2. 字符串比较
可以直接比较
也可以:
str1.compare(str2);
str1.compare(pos1,len1,str2,pos2,len2); 值为负,0 ,正。
3. 附加
str1 += str2;
或
str1.append(str2);
str1.append(str2.pos2,len2);
4. 字符串提取
str2 = str1.substr();
str2 = str1.substr(pos1);
str2 = str1.substr(pos1,len1);
5. 字符串搜索
where = str1.find(str2);
where = str1.find(str2,pos1); pos1是从str1的第几位开始。
where = str1.rfind(str2); 从后往前搜。
6. 插入字符串
不是赋值语句。
str1.insert(pos1,str2);
str1.insert(pos1,str2,pos2,len2);
fgets函数
函数原型: char * fgets(char * s, int n,FILE *stream);
参数:
s: 字符型指针,指向存储读入数据的缓冲区的地址。
n: 从流中读入n-1个字符
stream : 指向读取的流。
stringstream的使用,stringstream以前使用的时候还不觉得它很有用,但用的次数多了以后,就感觉到了它的用处,最大的作用就是分割字符串了,目前来讲。
一下就是一道题的输入代码,输入若干行整数,每行若干个整数,先用getline一行一行的读进来再切割。
string line;
if(!getline(cin,line)) return false;
stringstream ss(line);
n=0;
int x;
while(ss>>x) a[n++]=x;
sscanf函数
sscanf(要输入的字符串,格式,接受的变量)
sscanf(&s[1],"%d",&v);