cin、cin.getline(arr, size)、getline(cin, str)

本文介绍了C++标准库中的cin在处理用户输入时如何受空格影响,以及如何使用getline函数实现按行完整输入字符串。通过示例代码,展示了cin.getline()和C++string类的getline()方法在接收一整行内容时的优势。
摘要由CSDN通过智能技术生成

一、cin使用空白(空格、制表符、换行符)来确定字符串的截止位置

注意下方这段代码 使用cin来接收姓名和甜点名,当我的名字长度大于一个单词长度时,cin直接按空格进行接收,将我输入的xiao接收到name中,wei接收到dessert中,导致我还没有输入dessert结果就全部打印了。

无法接受一整行内容

#include<iostream>
using namespace std;
int main()
{
	const int Size = 20;
	char dessert[Size];
	char name[Size];
	cout<<"Enter youer name"<<endl;
	cin>>name;
	cout<<"Enter your favourite dessert"<<endl;
	cin>>dessert;
	cout<<"I have some delicious "<<dessert;
	cout<<" for you,"<<name<<".\n";
	return 0; 
} 

 二、面向行的输入  使用cin.getline(name, size)来接收

cin.getline()第一个参数为接收字符串的字符数组名,第二个参数为要读取的字符数

    cout<<"Enter youer name"<<endl;
	cin.getline(name, Size);
	cout<<"Enter your favourite dessert"<<endl;
	cin.getline(dessert, Size);

 三、c++中string类使用getline()接收

也可以正常按行输出的目的

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

int main()
{
    string name;
    string dessert;
    cout<<"Enter youer name"<<endl;
    getline(cin, name);
    cout<<"Enter your favourite dessert"<<endl;
    getline(cin, dessert);
    cout<<"I have some delicious "<<dessert;
    cout<<" for you,"<<name<<".\n";
    return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c++和BKDRHash方法解决下述问题:描述 Akko正在Luna Nova Magic Academy学习魔法。据说魔法世界中有10^5种不同的诅咒。阿卡很难记住所有这些。幸运的是,梅里迪斯教授说她可以帮助阿卡制作一本诅咒词典。当Akko听到诅咒时,字典会告诉她诅咒的效果。此外,当Akko想做某事时,字典会为她找到诅咒。如果没有这样的诅咒,字典将是沉默的。你能写一个程序来重现诅咒词典吗?输入 每个测试用例将包含不超过 10^5 个诅咒。每个诅咒都会像“[名称]效应”。诅咒的名称和效果将只包含小写字母。“]”和它后面的字符串之间只有一个空格。名称长度不超过20,效果长度不超过80。字典的末尾是一行“END”。在所有诅咒之后,将有一个整数 N (1<=N<1000),后跟 N 个查询。每个查询都将是一个“[诅咒名称]”或“诅咒效果”。每个输入文件中只有一个测试用例。输出 对于每个测试用例,您必须按其名称输出诅咒的效果或按其效果输出诅咒的名称。如果没有满足条件的诅咒,请打印“沉默”。提示 哈希字符串 gets() 在 C++14 中被弃用,改用 getline。对于 char arr[],请使用 cin.getlinearrsizeof(arr));对于字符串 arr,请使用 getlinecinarr);BKDRHash方法:unsigned int BKDRHash(char* str) { unsigned int seed = 31, key = 0; // 31 131 1313 13131 131313 etc.. while(*str) key = key * seed + (*str++); return key & 0x7fffffff; // return a 31-bit value }
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值