- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我实现了 toUpper()。它并非 100% 有效。
代码:
char* toUpper(char* string)
{
char* sv = string;
while(*sv++ != '\0')
{
if( int(*sv) >= 97 || int(*sv) <= 122) //Only if it's a lower letter
*sv = char( *sv - 32);
}
return string;
}
我知道小写字母的数字是 97 到 122(ASCII 格式),大写字母的数字是 65 到 90。小写字母和大写字母之间正好有 32 个数字。所以我只是从较低的字符中减去 32。
调用此函数的代码:
char h[] = "Whats up?";
cout << toUpper(h) << endl;
我希望程序输出"WHATS UP?" 但我却得到了"WHATS"。我做错了什么?
最佳答案
if( int(*sv) >= 97 || int(*sv) <= 122)
应该是
if( int(*sv) >= 97 && int(*sv) <= 122)
或者,最好
if( *sv >= 'a' && *sv <= 'z')
*sv = *sv - ('a' - 'A');
您还需要移动增加 sv
的点。当前代码跳过检查 string
while(*sv != '\0')
{
if( *sv >= 'a' && *sv <= 'z')
*sv = *sv - ('a' - 'A');
sv++;
}
最后,我相信你已经知道了,但以防万一……如果这不是家庭作业或其他学习练习,标准 C toupper功能将为您完成完全相同的工作
*sv = (char)toupper(*sv);
关于C++ toUpper 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16901339/
使用 String.toUpper() 时尝试“格式化”不包含大写字符(例如阿拉伯语)的语言时,是否必须采取任何其他预防措施? string arabic = "مرحبا بالعالم"; str
对于以下功能 void display() { for (int i = 0; i 97 && (i+j)%2 == 0) SetConsoleTextAtt
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
这里我检查输入数组 (inputText[]) 中的每个字符是否至少与 LETTERS 数组中的一个字母匹配。但 toupper() 函数对我不起作用。我正在 Linux mint 上工作并使用 gc
我在尝试理解 toupper() 函数时面临一个有趣的问题。请找到下面的代码:这里的问题是在输出中我总是缺少输入字符串的第一个字符。 请纠正我的错误。我在谷歌搜索了太多之后才发布此内容。 void U
这个问题已经有答案了: Lowercase characters to Uppercase characters in C & writing to file (1 个回答) 已关闭 7 年前。 我正
我尝试了以下方法:*string = toupper(*string); 这仅使指针指向的字符串指针的第一个字符变为大写。我希望 *pointer 指向的所有字符指针均为大写。无论如何我可以做到这一点
我正在从服务器传递一条消息,该消息存储在一个名为 strObject 的字符串变量中。我希望将 strObject 中的字符串转换为大写。所以,我使用 ToUpper() 方法。但是,当我添加一个断点
我正在使用 substring 和 IndexOf 来定位字符串中的值,但如果下面的字符串 (strOldValue) 包含不同大小写的任何字符串,我的代码将不起作用。因此,如果 strOldValu
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicate: Convert a String In C++ To Upper Case 你好,我需要一个可移植的函数来将
我正在尝试将字符串转换为大写以便我可以对其进行操作,但是虽然我可以成功地操作自然大写字符串以及将小写转换为大写,但使用这种转换方法无法进行操作。 例如,如果我通过加密传递“hello”,我的加密字符串
我已经创建了一组算法,它接受一个字符串 vector 的输入,检查是否有任何字符串出现不止一次:如果是这样,从 vector 中删除所有额外出现的字符串,然后输出新的,'lighter ' 没有冗余的
我实现了 toUpper()。它并非 100% 有效。 代码: char* toUpper(char* string) { char* sv = string; while(*sv++
我很好奇 .ToUpper() 是如何工作的?是否存在某种映射,较低的 a 具有 UTF 代码 XYZ,而较高的 a 具有 UTF 代码 XYZ1? 最佳答案 是的,它正在使用 Unicode 元数据
我有一个 []byte,b,我想选择一个字节,b[pos] 并改变它大写(然后是小写) bytes 类型有一个名为 ToUpper() 的方法。如何将它用于单个字节? 在单个字节上调用 ToUpper
我在使用 toupper() 函数时遇到问题: 代码: #include #include using namespace std; int main (){ string input {
如果 ToUpper() 不存在,你会怎么写? i18n 和 L10n 的奖励积分 由此引发的好奇心:http://thedailywtf.com/Articles/The-Long-Way-toUp
我见过以下使用自定义 toupper() 函数的程序。 #include void my_toUpper(char* str, int index) { *(str + index) &=
长期潜伏者需要帮助,但我无法通过搜索找到。好吧,我在撒谎,我发现了一些东西,但它对我没有帮助。 我想做的是创建一个包含字符串的 char 数组并显示,将它们传递给一个函数,该函数将大写字母字符(应该只
我被分配重新编码 toUpper 和 toLower 函数。我是否必须在 if 语句中写出所有 26 个字母,例如: if ( char == 'a' ) return 'A'; 或者还有其他简单的方
我是一名优秀的程序员,十分优秀!