2021/1/17 第一次写博客

这个星期接触了挺多新鲜的东西,C++语言
虽然只了解一点
知道了头文件和C的区别
(还了解了一点新的算法)
C++用
“#include
using namespace std;“
这个还是挺难记的,多用几次就能熟练了
C++有自己的输入输出格式
从百度上找到的总结一下(带上别人的一点经验)就是这样:
1.cout代表C++的输出流,与“<<”一起使用
2.cin代表输入流,与“>>”一起使用
(输入的时候也要注意双引号单引号的使用)
回车可以用\n 也可以用endl

#include <iostream>
using namespace std;
int main(){
	int a; 
	cin>>a;//从键盘上取值赋给a
	cout<<a<<"\n";//输出a换行 
	cout<<a<<endl;//输出a换行 
} 

cin和cout属于C++的概念,调用时涉及输入输出流,而scanf和printf属于C的概念,是C语言的标准输入/输出库中的函数,所以在时效上,scanf和printf优于cin、cout,对于大数据的输入输出,通常情况下应该用scanf、printf。
(这里借用了别人的经验,有点官方的赶脚)
cin和cout能够自动识别变量的数据类型,因此,在进行输入输出时,不需要指定数据类型,printf和scanf函数在输入输出时需指定数据类型。(确实方便,但该记的还是要去记)
下面是字符的处理
(一)
要用到这个头文件

中间不能有空格的字符串串

#include <iostream>//字符串的输入输出 
#include <string>//要用到这个头文件 
using namespace std; 
int main(){
	string s;//定义
	cin>>s;//cin在遇到空格符(重点!!)或回车符时会认为字符串已经结束
	cout<<s;
} 


一个平平无奇的字符串串

  1. getline() 接收一个字符串,可以接收空格并输出
#include <iostream> 
#include <string>
using namespace std; 
int main(){
	string a;
	getline(cin,a);
	cout<<a<<endl;  
} 

字符数组
2. gets() 接受一个字符数组,可以接收空格并输出(这两者都可以接收空格,但是遇到回车会结束)

#include <iostream> 
#include <string>
using namespace std; 
int main(){
	char a[100];
	gets(a); 
	cout<<a<<endl;  
} 

(二)
不用额外的头文件
可以用cin.getline()和cin.get()处理字符串
cin.getline()
该函数有两个参数。第一个参数是用来储存输入行的数组名称,第二个参数是要读取的字符数
cin.getline(要赋值的数组名称a,读取的字符数n);

#include <iostream> 
using namespace std; 
int main(){
	char a[100];
	cin.getline(a,20);//只读取19个字符!!!注意格式
	cout<<a<<endl;
} 

此二者与cin>>的区别:这两种输入方式只会在遇到回车符时认为字符串结束,在遇到空格符时还会继续读取空格后面的字符。
cin>>遇到空格、TAB和回车都会停止读入,并且会保留
cin.getline();在遇到回车符时,结束字符串输入并丢弃回车符。
cin.get();在遇到回车符时,则会保留回车符在输入队列。并且没有说一定参数
这就是说如果同时用两个cin.get()就会出问题,只能读取到第一次输入。因为捏,第一个get输入结束之后会保留下回车,然后这个回车又被下一个get读取了,而get读到回车就会结束
直接结束,没有故事了,所以你确定还要连续使用两个cin.get()吗???

需要注意的是
cin.get();有两种
1.cin.get(字符变量名)
2.cin.get(字符变量名,读入的字符数量)类似cin.line()也只会读取n-1个数据
第一种只能吸收一个字符,第二种用来接收一行字符串,可以接收空格
看到这里,有没有一点想法?可以用cin.get()吸收掉末尾的换行符,这样就可以用两个cin.get()啦。
就像酱紫
cin.get(name,10);
cin.get();
cin.get(blog,10);
两个不行再来一个咯

呼,今天的博客到此结束,第一次写有点慌张,有点乱七八糟

2021-5-25来补充一下(发现自己还有一点懵)

题目是

hdu2030

#include <iostream>
#define MAX 1100
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;

int main(){
    char a[MAX];
    int t,sum;
    cin>>t;//这里留下了一个回车
    getchar();///不加这个的话回车会被下面的gets()读入从而终止后续的字符读入(把gets改成scanf也是一样)
    while(t--){
        sum=0;
        gets(a);
        for(int i=0;a[i]!='\0';i++){
            if(a[i]<0)//汉字编码的两个字节最高位是1,可以认为小于0就是汉字
                sum++;
        }
        cout<<sum/2<<endl;//汉字占两个字节所以除二
    }

    return 0;
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值