c++ - 如何使这个大写小写 C++ 程序工作?
问题描述
我正在尝试制作这个应用程序,它将字符串的大写字符转换为小写,反之亦然。
但是当我运行代码时,它会显示一个非常奇怪的输出
我写的代码:
#include <iostream>
#include <string.h>
std::string toggle(std::string str)
{
#define maxsize 100
if (sizeof(str)>maxsize)
{
std::cout << "Size of string is too big!" << std::endl;
exit(1);
}
else
{
for (int i = 0 ; i<=sizeof(str) ; i++)
{
if (isupper(str[i]))
{
std::cout << "UPPER CASE CONVERTED TO LOWER CASE "<< tolower(str[i]) <<"" << std::endl;
}
else
{
std::cout << "LOWER CASE CONVERTED TO UPPER CASE "<< toupper(str[i]) <<"" << std::endl;
}
}
}
}
int main()
{
toggle("Hello This Is A Test");
}
输出
UPPER CASE CONVERTED TO LOWER CASE 104
LOWER CASE CONVERTED TO UPPER CASE 69
LOWER CASE CONVERTED TO UPPER CASE 76
LOWER CASE CONVERTED TO UPPER CASE 76
LOWER CASE CONVERTED TO UPPER CASE 79
LOWER CASE CONVERTED TO UPPER CASE 32
UPPER CASE CONVERTED TO LOWER CASE 116
LOWER CASE CONVERTED TO UPPER CASE 72
LOWER CASE CONVERTED TO UPPER CASE 73
LOWER CASE CONVERTED TO UPPER CASE 83
LOWER CASE CONVERTED TO UPPER CASE 32
UPPER CASE CONVERTED TO LOWER CASE 105
LOWER CASE CONVERTED TO UPPER CASE 83
LOWER CASE CONVERTED TO UPPER CASE 32
UPPER CASE CONVERTED TO LOWER CASE 97
LOWER CASE CONVERTED TO UPPER CASE 32
UPPER CASE CONVERTED TO LOWER CASE 116
LOWER CASE CONVERTED TO UPPER CASE 69
LOWER CASE CONVERTED TO UPPER CASE 83
LOWER CASE CONVERTED TO UPPER CASE 84
LOWER CASE CONVERTED TO UPPER CASE 0
LOWER CASE CONVERTED TO UPPER CASE 0
LOWER CASE CONVERTED TO UPPER CASE 0
LOWER CASE CONVERTED TO UPPER CASE 0
LOWER CASE CONVERTED TO UPPER CASE -73
LOWER CASE CONVERTED TO UPPER CASE -125
LOWER CASE CONVERTED TO UPPER CASE -97
LOWER CASE CONVERTED TO UPPER CASE 34
UPPER CASE CONVERTED TO LOWER CASE 119
UPPER CASE CONVERTED TO LOWER CASE 98
LOWER CASE CONVERTED TO UPPER CASE 0
LOWER CASE CONVERTED TO UPPER CASE 0
LOWER CASE CONVERTED TO UPPER CASE -48
为什么显示整数而不是字符串?难道我做错了什么?
我可以看到它正在将大写字符转换为小写并返回,但为什么它不显示字符串?
解决方案
首先,我return
在函数内部添加了一个toggle
。其次std::string
,您可以使用size()
成员函数找出 a 的长度/大小。使用这两个修改,您的程序将如下所示:
#include <iostream>
#include <string.h>
#define maxsize 100
std::string toggle(std::string str)
{
if ( str.size() > maxsize)
{
std::cout << "Size of string is too big!" << std::endl;
}
else
{
for (int i = 0 ; i < str.size() ; i++) //note here i have removed <= and instead used <
{
if (isupper(str.at(i)))
{
str.at(i) = tolower(str.at(i));
std::cout << "UPPER CASE CONVERTED TO LOWER CASE "<< str.at(i) <<" " << std::endl;
}
else
{
str.at(i) = toupper(str.at(i));
std::cout << "LOWER CASE CONVERTED TO UPPER CASE "<< str.at(i) <<" " << std::endl;
}
}
}
return str; //added this return
}
int main()
{
toggle("Hello This Is A Test");
}
上述程序的输出是:
UPPER CASE CONVERTED TO LOWER CASE h
LOWER CASE CONVERTED TO UPPER CASE E
LOWER CASE CONVERTED TO UPPER CASE L
LOWER CASE CONVERTED TO UPPER CASE L
LOWER CASE CONVERTED TO UPPER CASE O
LOWER CASE CONVERTED TO UPPER CASE
UPPER CASE CONVERTED TO LOWER CASE t
LOWER CASE CONVERTED TO UPPER CASE H
LOWER CASE CONVERTED TO UPPER CASE I
LOWER CASE CONVERTED TO UPPER CASE S
LOWER CASE CONVERTED TO UPPER CASE
UPPER CASE CONVERTED TO LOWER CASE i
LOWER CASE CONVERTED TO UPPER CASE S
LOWER CASE CONVERTED TO UPPER CASE
UPPER CASE CONVERTED TO LOWER CASE a
LOWER CASE CONVERTED TO UPPER CASE
UPPER CASE CONVERTED TO LOWER CASE t
LOWER CASE CONVERTED TO UPPER CASE E
LOWER CASE CONVERTED TO UPPER CASE S
LOWER CASE CONVERTED TO UPPER CASE T
可以在这里看到。
推荐阅读
- python - 满足条件时返回列表的函数;Python
- c++ - 没有构造函数实例“Hourly::Hourly”在同一行上匹配参数列表和错误代码 C2664
- bash - 检查目录中是否有 1 个或多个特定文件?
- c# - 如何在 C# 中将可空修饰符作为输出参数传递
- python - 警告:带有 sigfig.py 的有效数字带有较低有效数字的数字
- ruby - 创建一个类:堆栈级别太深(SystemStackError)?
- kotlin - 将字符串引用数据类型转换为实际引用数据类型
- python - linux下python中设置RS485设备地址
- angular - 创建 Angular 全局变量
- javascript - 如何通过 Angular 中的异步 base64 字符串显示图像