提问关于getline()和get()的差异

分别读取两段字符串,当getline()在get()上边时,由于getline()读取整个一行,遇到换行符时停止,并且丢弃换行符,可以致使address不被赋予空字符串,因此其能正常读取地址字符串。

而当get()或者cin先运行时,两者不会忽略换行符,导致后续的address被赋予空字符串,无法从缓冲区输出正确地址并打印输出

源代码1:

#include <iostream>

#include<string>

int main()

{

    char year[30]{};

    char address[30]{};

    std::cout << "Enter your year: ";

    std::cin.getline(year,30);

    std::cout << "Enter your address: ";

    std::cin.get(address,30);

    std::cout<<"Your name: "<<year<<std::endl;

    std::cout<<"Your address: "<<address<<std::endl;

    return 0;

}

源代码2:

#include <iostream>

#include<string>

int main()

{

    char year[30]{};

    char address[30]{};

    std::cout << "Enter your year: ";

    std::cin.get(year,30);

    std::cout << "Enter your address: ";

    std::cin.getline(address,30);

    std::cout<<"Your name: "<<year<<std::endl;

    std::cout<<"Your address: "<<address<<std::endl;

    return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值