gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:19:06 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com