程序设计课程 总结

总结一下我认为遇到的比较骚的操作

1.stringstream
头文件 <sstream>

用法一:多个字符串拼接
stringstream sstream;
sstream<<"asd"<<" "<<"dfgdf";

用法二:
当一行里面有多个字符串,且带有空格
我们想把他分开
用这个就特别骚
比如: 
wo ai zhong guo
wo ai hhy
我们要读取的话
一般情况前面会有一个n,表示有多少行
string str;
cin>>n;
getchar();//读取缓冲区的回车
while(n--)
getline(cin,str)

stringstream s;
s<<str;
string t;
while(s>>t)
{vector.push_back(t);}
//这样我们就可以把这些字符串分开
2.scanf的正则化
(在特定的一些很复杂的输入中,这个东西真的很好用)

输入指定范围的小写字符,遇到非法就停止
scanf("%[a-z]",str1);
printf("%s\n",str1);
输入:abc123
输出:abc

输入不包括指定字符的字符
scanf("%[^a-z]", str1);
printf("%s\n",str1);
输入:123 456abc123
输出:123 456

注意:这种方式可以读入空格
scanf("%[^\n]", str1);
printf("%s\n",str1);

%表示选择,%后面的是条件,比如"%s",s是一个条件,表示任意字符,"%s"的意思是:只要输入的东西是一个字符,就把它拷贝给str。"%3s"又多了一个条件:只拷贝3个字符。 “%[a-z]”的条件稍微严格一些,输入的东西不但是字符,还得是一个小写字母的字符。

%*%刚好相反,表示过滤满足条件的字符,也就是跳过满足条件的字符,其后一定要有新的%语句,否则无法读入

更多使用
https://www.cnblogs.com/orange1438/archive/2013/05/12/4544958.html
3.string 的一些好的用法

string s(str, strbegin,strlen):
将字符串str中从下标strbegin开始、长度为strlen的部分作为字符串初值

string s(cstr, char_len):
以C_string类型cstr的前char_len个字符串作为字符串s的初值

string s(num ,c):生成num个c字符的字符串

string s(str, stridx):将字符串str中从下标stridx开始到字符串结束的位置作为字符串初值

    string str3("12345", 0, 3);//结果为"123"
    string str4("012345", 5);  //结果为"01234"
    string str5(5, '1');       //结果为"11111"
    string str6(str2, 2);      //结果为"3456789"



4.string 的一些函数使用

string类型支持直接比较
还有s.compare()函数

尾插 push_back()
位置插 insert(pos,char)

<string>
tolower(char)//变小写函数
toupper(char) //变大写

find(char*);
可以这样用:
if(s.find('#') == string::npos )
其中string::npos 是一个代表未找到的值
所以就是没有找到 #

s.rfind() //反向查找

sort(s.begin(),s.end()) //排序

分割函数
s.substr(2,5)  //表示第二个位置开始,长度为5
5.<ctype.h> 也蛮好用的
isalnum(int)  //是否为字字母和数字
isalpha(int)  //是否字母
isdigit(int)  //是否为10进制数字
islower(int)  //是否小写字母
isupper(int)  //是否大写字母
6.<cstring>
memset(c,0,sizeof c) //快速填充 只有-1和0

#include <cstring>   //不可以定义string s;可以用到strcpy等函数
#include <string>   //可以定义string s;可以用到strcpy等函数
#include <string.h>   //不可以定义string s;可以用到strcpy等函数

cstring里面包含了很多可以对char*进行操作的函数
有些效果还不错,因为如果不用string而用char*的话
还是要用到这些函数的

1.strcpy   复制
strcpy(a,b)  //a = b

2.strncpy  部分复制
strncpy(a,b,sizeof b) //a=b

3.strcat 合并
strcat(a,b)  //a=a+b

4.strncat 部分合并
strncat(a,b,21) 

5.strchr 查找字符
 char* strchr(char* s, char c); 
功能: 查找字符串s中首次出现字符c的位置 
说明: 返回首次出现c的位置的指针,如果s中不存在c则返回NULL
t=strchr(src,'?')-src;

6.查找字符串
t=strstr(src,"thing")-src;

7.strcmp 比较(常用一点)
int strcmp(char* s1, char* s2); 
说明: 当s1 < s2时,返回值<0; 
    当s1 = s2时,返回值=0; 
    当s1 > s2时,返回值>0

8.stricmp(不区分字母的大小写)
 int stricmp(char* s1, char* s2); 
说明: 当s1 < s2时,返回值<0; 
    当s1 = s2时,返回值=0; 
    当s1 > s2时,返回值>0

9.strupr(小写转大写)
strupr(s);

10.strlwr(大写转小写)
 strlwr(s);

11.strrev(倒置)
strrev(s);
7.printf 对特定输出的用法
(printf规则输出比cout好用,cout一堆东西完全不好记忆)

printf("%6d",a)  //左边补空格

printf("%06d",a)  //左边补0

printf("%-6d",a)  //右边补空格

printf("%.4f",a)  //保留4位小数

printf("%6.4f",a)  //整数部分6位补空格,小数部分4位

printf("%x",c)  //16进制
8.文件操作

FILE *in,*out;
in = fopen("file.in","rb");
out = fopen("file.out","wr");

fscanf(in,"%d %d",&a,&b);
fprintf(out,"%d",a+b);

fclose(in);
fclose(out);

文件重定向 c
FILE *freopen( const char *filename, const char *mode, FILE *stream );

freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);

 int a,b;
    scanf("%d %d",&a,&b);
    printf("%d\n",a+b);
fclose(stdin);//关闭文件 
    fclose(stdout);//关闭文件

//如果想改回来,需要重新打开标准控制台设备文件,这个跟系统有关
 
//Windows系统下
freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
 
//Linux系统下
freopen("/dev/console", "r", stdin);
freopen("/dev/console", "w", stdout);


(用的不多) 可能平时自己调试的时候会用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值