while中的cin.getline()

在循环中的cin.getline()

while(cin.getline(a,100))中无法重复输入,
若改成:
while(cin>>a){
cin.get();
}
可解决多次输入问题,但是默认空格结束。
在C语言中可以这样解决
1.gets()函数 ,用gets()替代scanf();
gets可以无限读取字符串,不会判断上限,以回车结束读取。其用法为gets(s),其中s为字符串变量(字符串数组名或字符串指针)。简单的理解就是读入一串字符(遇到回车结束)
2.scanf("%[^\n]",str) ,遇到"\n"结束
‘^‘含有非的意思
“%[^\n]“即遇到\n结束。
如果使用”%[^v]”,那我们输入 “I love you!” ,输出的就是 “I lo”
3.因为cin自动把enter忽略了,而cin.getline不行,因为默认是遇到’\n’就结束读入,您可以尝试这样:
void main()
{
int a ;
(cin >> a).get();//把遗留下来的’/n’去掉。
char b[10];
cin.getline(b,10);
cout << a << endl
<< b << endl;
}
例如:
在这里插入图片描述

#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
 
int main()
{
 
    int b[7];
    int i,j,len,t,m,w;
    int n=4965873;
    for(i=6; i>=0; i--)
    {
        b[i]=n%10;
        n=n/10;
    }//将循环体置入数组中
    cout<<"请输入测试的次数:";
    (cin >> m).get();//去掉回车,防止cin.getline()得到回车结束
    for(w=m; w>0; w--)//循环次数
    {
        char a[100];
        cout<<"请输入要加密或者解密的内容:";
        gets(a);
        len=strlen(a);
        cout<<"输入1加密,输入2解密:";
        (cin >> t).get();//同上
        if(t==1)//加密操作
        {
            for(i=0; i<len; i++)
            {
                j=i%7;
                if((a[i]+b[j])>=32&&(a[i]+b[j])<=122)
                    a[i]=a[i]+b[j];
                else
                    a[i]=a[i]%b[j];
            }
        }
 
        else//解密操作
            for(i=0; i<len; i++)
            {
                j=i%7;
                if((a[i]-b[j])>=32&&(a[i]-b[j])<=122)
                    a[i]=a[i]-b[j];
                else
                    a[i]=a[i]%b[j]+a[i]*b[j];
            }
        cout <<a<< endl;
        cout<<"剩余测试次数:"<<w-1<<endl;//直观显示剩余次数
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JdiLfc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值