大一c++课设小问题集合及几个实用的小函数。可以提高编程效率。

一. cin.ignore()函数。

引入此函数的背景:使用getline从键盘获取数据的时候出现。

        cout << "请输入车牌号" << endl;
		cin.ignore();  //如果不加就会跳过第一个getline,原因就是上面会按一个回车,反映在程序中就是一个'/n',你要不加一个ignore(),第一个getline就会获取到这个存在缓冲区的'/n',
		cin.getline(Billsystem.BillArry[Billsystem.m_size].carNo,100);

先是不加,第一次getline输入直接就跳过了。
在这里插入图片描述
加上ignore()函数之后,就可以正常运行。
在这里插入图片描述
例二:

#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main(){
    //上半段是不加cin.ignore时的情况。 
	cout<<"上半段是不加cin.ignore时的情况。" <<endl;
	int age;
    cout<<"Please enter an integer value as your age: ";
    cin>>age;
    cout<<"Your ager is: "<<age<<".\n";
    string mystr;
    cout<<"What's your name? your answer: "<<endl;
    getline(cin,mystr);
    cout<<mystr<<".\n";
    
    //下半段是加上cin.ignore()的情况。 
    cout<<"下半段是加上cin.ignore()的情况。"<<endl;
    char sex;
    cout<<"Please enter a F or M as your sex: ";
    cin>>sex;
    cout<<"Your sex is: "<<sex<<endl;
    cout<<"What's your favorite team? ";
    cin.ignore();
    cin.ignore();//这里有俩ignore,没有写错,不信可以试一下,因为上边有一个回车还在cin缓冲区内。
    getline(cin,mystr);
    cout<<mystr<<".\n";

    system("pause");
    return 0;
}

运行结果:可以看出,那个name的输入直接就跳过了。
在这里插入图片描述

二. cin.get()函数。

作用: 从键盘获取你输入的东西,一般用在结尾防止程序运行完之后立即退出。

三.system(“cls”)函数

作用:清屏。

四.fflush(stdin)函数

作用:光标不停闪烁,增强灵动性。

五. strcmp(str1,str2) 函数

注意:1.必须要加#include<string.h>头文件,加#include< string>不行

作用:比较str1和str2是否相同
str1=str2 返回值为0
str1>str2 返回值为1
str1<str2 返回值为-1

程序代码示例

#include<iostream>
#include<string.h> //此头文件必须有,不能用string替代 
using namespace std;
int main(){
	
   //1.相同时 
   const char  str1[]="123";
   const char  str2[]="123";
   int a=strcmp(str1,str2);
   cout<<"相同时的返回值为:"<<a<<endl;
   
   //2.前者大于后者时 
   const char  str3[]="1234";
   const char  str4[]="123";
   int b=strcmp(str3,str4);
   cout<<"前者大于后者时的返回值为:"<<b<<endl;
   
   //3.前者小于后者时
   const char  str5[]="123";
   const char  str6[]="1234";
   int c=strcmp(str5,str6);
   cout<<"前者小于后者时的返回值为:"<<c<<endl;
   
}

运行结果:
在这里插入图片描述
tip:
char str1=”123“ 时前面一定要加const,不然要么警告,要么错误,不同的编译器标准不同。
否则:6 16 C:\ Users \ DELL \ Desktop \张瑞强20202106149题.cpp [警告]不建议将字符串常量转换为’char *’[-Wwrite-strings]
原因就是:123是字符串常量,而所有常量都是const类型的,把一个const类型赋给一个非const是不符合规范的。

六.strcpy_s(str1,str2)函数

    其中 str1是等待被覆盖的变量,str2中是我需要的数据。

要求:需要头文件<string.h>或者< cstring>

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char str1[20];
    char str2[20];
    char str[20];
    //1.str2赋给str1 双参数版
    cout << "Please enter str2: ";
    cin.get(str2, 20);
    strcpy_s(str1, str2);
    cout << "str1 is:" << str1 << endl;
    //2.三参数版,中间的那个用了strlen函数来计算str1字符串的长度
    //加一的原因是因为,str末尾有个 '/0',也算一个长度。
    strcpy_s(str, strlen(str1) + 1, str1);
    cout << "str is: " << str << endl;
    system("pause");
    return 0;
}

七.strlen()函数

作用:计算字符串长度

#include<iostream>
#include<string.h> //此头文件也必须有,不能用string替代 
using namespace std;
int main(){
   char str1[100];
   cin.getline(str1,100); 
   int b=strlen(str1);
   cout<<"此字符串长度为"<<b<<endl;
}

结果:
在这里插入图片描述
把俩空格也计入了,这个是getline的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ad_m1n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值