蓝桥杯十天冲刺-day1(getline读入空格)

getline读入带空格的字符串

解决cin或scanf无法读入空格的问题
作文标题
在这里插入图片描述

代码思路

主要通过这个代码体会getline函数可以输入空格的作用
用getline函数输入含空格的字符串,用length()函数记字符串长度
依次扫描不为空格的字符计数

#include<bits/stdc++.h>
using namespace std;
int main(){
	string str;
	getline(cin,str);.//getline常见用法,输入一串字符串遇到换行符结束
	int cnt=0;
	int n=str.length();//n获取字符串长度
	for(int i=0;i<n;i++){//扫描整个字符串
		if(str[i]!=' '){//不算空格
			cnt++;
		}
	}
	cout<<cnt<<endl;
}		

拓拓在打字
在这里插入图片描述

代码思路

  • 第一种做法:只输出 不连续的空格和不是空格的字符(getline获取整个字符串)
  • 因为cin不读入空格,输入的字符串一遇到空格就结束,输出输入的字符串(不含空格的)在后面加个空格“ ”
    第一种做法
#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s;
	getline(cin,s);
	for(int i=0;i<s.size();i++)
	{
		if((s[i]==' '&&s[i+1]!=' ')||(s[i]!=' ')){//只输出不连续的空格和不是空格的字符
			cout<<s[i];//不换行
		}
	}
}	

第二种做法

#include<bits/stdc++.h>
using namespace std;
int  main()
{
	string str;
	while(cin<<str){
		cout<<str<<" ";
	}
}

字符串与数字的转换

作文标题改
在这里插入图片描述
数字转字符串:to_string(n)

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string t;
	string str;
	getline(cin,t);//输入 要输入的字符串个数
	getline(cin,str);//输入字符串
	int cnt=0;
	int  n=stoi(t);//把输入的字符 转为数字
	for(int i=0;i<n;i++)
	{
		if(str[i]!=' '){
			cnt++;
		}
	}
	cout<<cnt<<endl;
}
<think>好的,我现在需要回答用户关于C++中getline函数是否会跳过空格的问题。用户提供的引用资料中有多个关于getline函数的说明,我需要仔细分析这些资料,找出正确的信息来回答用户的问题。 首先,用户的问题很明确:C++的getline函数是否会跳过空格?我需要确认getline在处理输入时对空格的处理方式。根据提供的引用内容,引用[2]提到:“在c++中用cin读入字符串,遇到空格会自动结束,而有些题目需要读入一行的字符串,包括空格。所以这就需要使用getline函数。”这里明确指出,cin在遇到空格时会停止读取,而getline可以接收包含空格的整行输入。这说明getline不会跳过空格,而是会读取包括空格在内的整行内容。 引用[5]中也提到:“当cin读取数据时,它会传递并忽略任何前导白色空格字符……一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。”而getline函数则是用来读取整行,包括空格,直到遇到换行符为止。因此,cin的>>操作符会跳过前导空格并在之后遇到空格时停止,而getline不会跳过任何字符,包括空格,会全部读取直到遇到指定的分隔符(默认是换行符)。 另外,引用[4]中的例子显示,getline可以指定分隔符,比如逗号,这时候会读取直到遇到逗号为止。但默认情况下,分隔符是换行符,因此getline会读取整行输入,包括其中的所有空格,不会跳过任何空格。例如,输入“Hello World”会被完整读取,而cin>>则只会读取“Hello”,后面的“World”留在输入流中。 总结来说,getline函数不会跳过空格,而是会读取输入中的每一个字符,直到遇到换行符或指定的分隔符。这与cin>>的行为相反,后者会跳过前导空格并在遇到空格时停止。因此,当需要读取包含空格的整行输入时,应使用getline函数。</think>在C++中,**`getline`函数不会跳过空格**。其设计目的正是为了读取包含空格的整行输入。具体行为如下: 1. **读取方式** `getline`会从输入流中读取字符,**包括空格**,直到遇到换行符(默认分隔符)或指定的终止符。例如: 输入 `Hello World` 时,`getline`会完整读取整个字符串,保留中间的空格,而`cin >>`只会读取到`Hello`[^2][^5]。 2. **与`cin >>`的区别** - `cin >>`会**跳过前导空格**,并在遇到空格、制表符或换行符时停止读取。 - `getline`则**不跳过任何字符**,直接读取当前行的所有内容(含空格),直到遇到换行符[^4]。 3. **示例代码** ```cpp #include <iostream> #include <string> using namespace std; int main() { string s1, s2; cin >> s1; // 输入 " Hello World ",s1的值为"Hello"(跳过前导空格,遇到空格停止) getline(cin, s2); // 输入 " Hello World ",s2的值为" Hello World "(保留所有空格) return 0; } ``` 4. **扩展用法** 可通过第三个参数指定终止符,例如`getline(cin, s, ',')`会读取字符直到遇到逗号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值