c++ 笔记 获取输入的区别

目录

使用cin进行获取

使用cin.getline()

使用cin.get()


  • 使用cin进行获取

示范1:

#include <iostream>

using namespace std;

int main()
{
    char name[20];
    char food[20];

    cout << "Enter your name: \n";    // 输入你名字
    cin >> name;
    cout << "Enter your favorite food: \n";     // 输入你喜欢的食物
    cin >> food;
    cout << "My name is " << name << " like " << food;

    return 0;
}

结果1:

cin将“wu”作为第一个字符串,放在了name中,将“ji”作为第二个字符串,放在了food中。达不到我们想要的效果。因为cin是使用空格、制表符和换行符来确定字符串结束位置。"wu ji"中间存在空格,所以分开存储。

ps:存储时会自动在字符串后添加空值字符,再存储。如“wu”——>“wu\0”

  • 使用cin.getline()

示范2:

#include <iostream>

using namespace std;

int main()
{
    char name[20];
    char food[20];

    cout << "Enter your name: \n";    // 输入你名字
    cin.getline(name, 6);
    cout << "Enter your favorite food: \n"; // 输入你喜欢的食物
    cin.getline(food, 9);
    cout << "My name is " << name << " like " << food;

    return 0;
}

结果2:

此时cin.getline()会以回车键输入的换行符来确定结尾,读取这一行规定的字符,存储到指定的数组中。

ps:空格也算一个字符,而且给定范围时要比可见的字符加一,如"wu ji"是五个字符,但是范围为六,因为存储时会在最后一位存储一个空字符。否则会丢弃换行符

如果我们给定范围小了会怎么样呢?如cin.getline(name,6)——>cin.getline(name,4)

会把"ji"给丢了 ,同时丢掉的换行符会传给下一个cin.getline()导致报错。

  • 使用cin.get()

示范3:

#include <iostream>

using namespace std;

int main()
{
    char name[20];
    char food[20];

    cout << "Enter your name: \n";    // 输入你名字
    cin.get(name, 6).get();
    cout << "Enter your favorite food: \n"; // 输入你喜欢的食物
    cin.get(food, 9).get();

    cout << "My name is " << name << " like " << food;
    return 0;
}

结果3:

因为get()不会丢掉换行符,所以说需要get(name,6).get()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值