设法将vector对象中的所以词都改写成大写形式

2024-03-08 09:20

本文主要是介绍设法将vector对象中的所以词都改写成大写形式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天在学C++容器中的vector,书后面有个练习题:

从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写成大写的形式。输出改变后的结果,每个词占一行。

然后我的第一想法是这样的:

#include<iostream>
#include<string>
#include<ctype.h>
#include<vector>using namespace std;int main(void)
{string word;vector<string> str;int i=0;while(cin>>word)
str.push_back(word);for(decltype(str.size()) index = 0;index != str.size();++index){str[index] = toupper(str[index]);}cout<<str<<endl;return 0;
}
当然这个程序错误百出,是个错误的示范,上面的程序学string对象时是可以实现的,但是vector不同于string,是不可能用同一种方法实现的。

错误一:这样用for循环遍历vector对象

错误二:就算上面的for循环遍历成功,用toupper把一整个string对象转为大写也是不可行的,toupper一次只能转换一个字符

错误三:直接用cin简单粗暴的输出vector对象

正确演示(来自与C++ Prime习题解答):

#include<iostream>
#include<string>
#include<ctype.h>
#include<vector>using namespace std;int main(void)
{string str;vector<string> vec;char cont = 'y';cout<<"请输入第一个词:"<<endl;while(cin>>str){vec.push_back(str);cout<<"你要继续吗?(y or n)"<<endl;cin>>cont;if(cont != 'y'&& cont != 'Y')break;cout<<"请输入下一个词:"<<endl;} cout<<"转换后的结果是:"<<endl;for(auto &mem:vec)  //使用范围for循环语句遍历vec中的每个元素{for(auto &c : mem) //使用范围for循环语句遍历mem中的每个字符c = toupper(c); //改写为大写字母形式cout<<mem<<endl;}return 0;
}
下面是程序允许演示:


这篇关于设法将vector对象中的所以词都改写成大写形式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符

《sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符》:本文主要介绍sqlserver、mysql、oracle、pgsql、sqlite五大... 目录一、转义符1.1 oracle1.2 sqlserver1.3 PostgreSQL1.4 SQLi

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

Python实现中文大写金额转阿拉伯数字

《Python实现中文大写金额转阿拉伯数字》在财务票据中,中文大写金额被广泛使用以防止篡改,但在数据处理时,我们需要将其转换为阿拉伯数字形式,下面我们就来看看如何使用Python实现这一转换吧... 目录一、核心思路拆解二、中文数字解析实现三、大单位分割策略四、元角分综合处理五、测试验证六、全部代码在财务票

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

javaSE类和对象进阶用法举例详解

《javaSE类和对象进阶用法举例详解》JavaSE的面向对象编程是软件开发中的基石,它通过类和对象的概念,实现了代码的模块化、可复用性和灵活性,:本文主要介绍javaSE类和对象进阶用法的相关资... 目录前言一、封装1.访问限定符2.包2.1包的概念2.2导入包2.3自定义包2.4常见的包二、stati

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os