ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PTA basic level 1009

2021-10-24 17:00:34  阅读:149  来源: 互联网

标签:str level iss PTA 空格 1009 字符串 输入 cout


2021-10-24

题目

测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

输出格式:
每个测试用例的输出占一行,输出倒序后的句子。

思路

本来想通过string获取字符串后,通过函数按照每个空格之间分割,但是操作有点麻烦。去了解了一点输入流的操作,用着还挺好使,iss作为输入流在while循环内持续输入至str,每隔空格就会停止输入,这样就可以完美分割且易于存储和后面的倒叙输出。

代码

#include<iostream>
#include<string>
#include<sstream>

using namespace std;

int main()
{
	//定义并输入字符串
	string s;
	getline(cin, s);
	istringstream iss(s);
	/*
	分割字符串
	i、words用来储存分解下来的字符串
	str用于获取每一次iss串流出入的字符串,即被空格分割时暂停获取的字符串
	*/
	int i = 0;
	string str;
	string words[80];
	while (iss >> str)
	{
		words[i] = str;
		++i;
	}
	//倒叙输出字符串
	while (i)
	{
		--i;
		cout << words[i];
		if (i != 0)
		{
			cout << " ";
		}
	}

	return 0;
}

记录

1.cin>>s遇到空格会自动结束读取,可以使用getline(cin,s)。使用三个参数getline(cin,s,ch)则代表读取到定义的ch字符时停止。
2.istringstream执行C++风格串流输入,添加<sstream>,就可以使用如本例进行串流输入。同时它的输入并不是读取之后,本身数据就转移了,只是顺序输入。同时一个istringtream的读取是单向单次不会回头,例

	iss >> str;
	cout << str << endl;
	iss >> str1;
	cout << str1 << endl;
	iss >> str2;
	cout << str2 << endl;

循环并不会影响,且不同输入对象也不会影响其从头再来。其本身内容输入完毕之后后续就不会再输入,如iss只有LOVE YOU时,则str2不会被输入任何内容,结果只有
LOVE
YOU

3.数组下标i还需要多加注意,经常出错。

标签:str,level,iss,PTA,空格,1009,字符串,输入,cout
来源: https://blog.csdn.net/bollks/article/details/120935439

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有