hdu 1161 Eddy's mistakes(字符串:读入一行)

2024-06-14 03:32

本文主要是介绍hdu 1161 Eddy's mistakes(字符串:读入一行),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

很水的一道题,考察的就是读入一行字符串

之前一直没有认真学习过,今天发现了一篇很不错的博客

分享一下:

AC代码如下:

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
char str[1001];
int main(void) {while(cin.getline(str, 1000)) {int len = strlen(str);for(int i=0; i<len; ++i)if(str[i] != ' ')printf("%c", tolower(str[i]));else printf("%c", str[i]);printf("\n");}return 0;
}

原文: http://www.wutianqi.com/?p=1181

------------------------------------------------------------------------------------

大家在学习C++编程时,一般在输入方面都是使用的cin.
而cin是使用空白(空格,制表符和换行符)来定字符串的界的。
这就导致了对于带有空格的字符串,比如”I Love www.CppLeyuan.com”
只能读入”I”,后面的都无法读入。
这时怎么办?
(论坛:www.cppleyuan.com)


 一.对于字符数组:
方法一:getline()
读入整行数据,它使用回车键输入的换行符来确定输入结尾。
调用方法: cin.getline(str, len);
第一个参数str是用来存储输入行的数组名称,第二个参数len是要读取的字符数。

#include <iostream>
using namespace std;int main()
{char str[30];cin.getline(str, 30);cout << str << endl;return 0;
}


方法二:get()


调用方法:cin.get(str, len);

#include <iostream>
using namespace std;int main()
{char str[30];cin.get(str, 30);cout << str << endl;return 0;
}


那么两者有何区别?
两者都读取一行输入,直至换行符。
然后,getline将丢弃换行符,而get()将换行符保留在输入序列里。
所以,再使用cin.get()输入多行数据时,中间可以使用get()消除换行符。

#include <iostream>
using namespace std;int main()
{char str1[30], str2[30];cin.get(str1, 30);cin.get();cin.get(str2, 30);cout << "str1: " << str1 << endl;cout << "str2: " << str2 << endl;return 0;
}

因为get(str, len)和get()都是cin的类成员,所以可以合并起来写:

#include <iostream>
using namespace std;int main()
{char str1[30], str2[30];cin.get(str1, 30).get();   // 注意这里!cin.get(str2, 30);cout << "str1: " << str1 << endl;cout << "str2: " << str2 << endl;return 0;
}

(欢迎大家去我论坛学习:C++奋斗乐园:http://www.cppleyuan.com)


二.对于string类
方法一:getline(cin, str)


这说明这里的getline不是类方法。

#include <iostream>
#include <string>
using namespace std;int main()
{string str;getline(cin, str);cout << str << endl;return 0;
}

PS:以后如果对输入方面还有更多了解,会继续补充,希望大家支持,多多交流。


Tanky Woo @ 2010-08-31
8 Comments
Category: C/C++, 我的原创
Tags: cin, get, getline, 原创, 输入, 输入整行

这篇关于hdu 1161 Eddy's mistakes(字符串:读入一行)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1059253

相关文章

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自