c++ - 如何在不同的行上返回大写和小写字符串?
问题描述
我正在使用 html、javascript 和 c++。我需要将字符串转换为大写和小写,并将它们都返回到前端。我只能以大写或小写形式返回一次字符串。我把它注释掉了,因为我只能返回一个正确的值?
我已经成功地将字符串转换为小写和大写,但我想知道我是否可以返回两个值而不是一个。
std::string upperCase(std::string words){
for(int i = 0; i < words.size(); i++) {
words.at(i) = toupper(words.at(i));
//words.at(i) = tolower(words.at(i);
}
return words;
}
输入:HeLLo 输出:下:hello 上:HELLO
解决方案
函数最多可以返回一个值是正确的。由于您需要两个返回值,因此您必须将它们打包成其他数据类型。
有几种选择。你可以使用std::tuple
,你可以创建一个包含两个字符串的结构/类,你可以返回一个字符串向量,等等。
下面的示例使用向量来保存字符串。
#include <iostream>
#include <vector>
std::vector<std::string> upperLowerCase(std::string words){
std::vector<std::string> res;
res.push_back(words);
res.push_back(words);
for(int i = 0; i < words.size(); i++) {
res[0].at(i) = toupper(words.at(i));
res[1].at(i) = tolower(words.at(i));
}
return res;
}
int main() {
std::vector<std::string> v = upperLowerCase("HeLLo");
std::cout << "Upper: " << v[0] << std::endl;
std::cout << "Lower: " << v[1] << std::endl;
return 0;
}
下面的例子使用std::tuple
#include <iostream>
#include <tuple>
std::tuple<std::string, std::string> upperLowerCase(std::string words){
std::string upper = words;
std::string lower = words;
for(int i = 0; i < words.size(); i++) {
upper.at(i) = toupper(words.at(i));
lower.at(i) = tolower(words.at(i));
}
return std::make_tuple(upper, lower);
}
int main() {
std::tuple<std::string, std::string> t = upperLowerCase("HeLLo");
std::cout << "Upper: " << std::get<0>(t) << std::endl;
std::cout << "Lower: " << std::get<1>(t) << std::endl;
return 0;
}
推荐阅读
- javascript - 为什么我在 iframe 中推送的脚本在父级中执行?
- python - 什么是 c++ 版本的 tensorrt.volume?
- reactjs - 使用特异性级别为 1 的 styled-components 定位子元素
- laravel - ADLDAP openLDAP 身份验证 - 未存储会话 - 返回登录页面
- firebase - 请帮助我 CloudFirestorePlugin.java 使用或覆盖已弃用的 API。(未经检查或不安全的操作。)
- java - 包含特定元素的列表
- mysql - 如何在没有 WHERE 的情况下计算连接表上的行数
- windows - 屏幕(虚拟)键盘在 Win10 中如何工作
- perl - Sendmail 使用 localhost.localdomain
- python - Python:需要文件的Popen-ing命令,用字符串替换文件?