C++ 更改字符串函数中的小写字母(再次......)

标签 c++ string function pointers

又是我。在我所有的问题中,我认为这是所有问题中最愚蠢的,但由于疲劳或愚蠢,我也需要一些帮助。然而,最重要的是,我这样做是为了我的一项任务,并且有一个严格的规则 - 我必须使用一个函数调用

char* 编码(char* source, char const* alpha)

这是我的一段非常原始的代码:

    int len = strlen(source);
    for (int i = 0; i < len; i++)
    {
        switch (source[i])
        {
        case 'a': source[i] = alpha[0];
        case 'b': source[i] = alpha[1];
        case 'c': source[i] = alpha[2];
        ................................
        ................................
        ................................
        case 'y': source[i] = alpha[24];
        case 'z': source[i] = alpha[25];
        default: source[i] = source[i];
        }
    }
    cout << source << endl;

它基本上应该使不超​​过 1000 个符号的输入字符串 source 将其所有小写符号 ('a' - 'z') 更改为已输入数组的相应符号(每个小写字母总共 26 个符号...'a' 随 a[0] 变化,'b' 随 b[1] 变化,等等)。

这里有几个问题:

  1. 我的代码不工作..输出总是一些奇怪的符号。我该如何解决?
  2. 如何缩短它?也许使用 for 语句代替 switch
  3. 当它工作时,我如何才能实现我在问题开头提到的功能(这可能是最重要的一个)?

仅作记录,这也是我的输入代码:

char source[1001];
cin.getline(source, 1001, '/n');

char alpha[27];
cin.getline(alpha, 27);

编辑:我将代码更改为:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    char source[1001];
    cin.getline(source, 1001, '/n');

    char alpha[27];
    cin.getline(alpha, 27);

    const int len = strlen(source);
    for (int i = 0; i < len; i++)
    {
        if ('a' <= source[i] && source[i] <= 'z')
        {
            source[i] = alpha[source[i] - 'a'];
        }
    }
    cout << source << endl;
    return 0;
}

然而它变得更容易出错。现在我的控制台输入永远不会结束......从字面上看......点击 Enter 不会停止它......没有什么......当我将 sourcecin.getline 更改为10 虽然再次返回了那些奇怪的符号,但它以某种方式结束了 - ╠╠╠╠

最佳答案

在 switch 语句中,当 case 匹配时,代码将执行以下所有 case,除非您在每个 case 的末尾使用 break。您的代码总是失败并达到默认情况。

关于C++ 更改字符串函数中的小写字母(再次......),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358150/

相关文章:

jquery - 函数调用时的scrollTop 动画多个

javascript - WebKit 的 Inspector 中的 { [native code] } 是什么意思?

C++ Win32 替换可执行文件中的字符串

c - 尝试在单个程序中打印字符、以空格结尾的字符串和以换行符结尾的字符串

C - 是否有办法在不使用全局变量的情况下将字符串/字符串数组从一个函数传递到另一个函数?

c# - 创建 2 个字符数组的所有单词变体

java - "You must enter a password with at least one number a lower case and a symbol"

c++ - std::vector、std::move 和指针失效

c++ - 覆盖非虚拟函数是否曾经是 "moral"?

通过嵌套构造函数对类成员进行 C++ 初始化