gpt4 book ai didi

C++ 输出错误的字母

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:32 26 4
gpt4 key购买 nike

你好,我有一个关于凯撒密码的新问题,例如

键:3

普通:ABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVYZ

密码:DEFGĞHIİJKLMNOÖPRSŞTUÜVYZABCD

这些是土耳其字母“ç ,ı ,ğ, ö , ş , ü , Ç, İ , Ğ, Ö, Ş, Ü ”

我需要进行加密和解密,程序不应该区分大小写。应该是s=S,ç=Ç

你可以在下面看到我的程序,但是我有一些问题

1) Text(Plain) 和 key 应该由用户输入,但我做不到。

2) 字 rune 本[] = "DEF";此输入应给出(用于解密)“CÇD”,但它给出“CÃD”

通常它应该给出“Ç”而不是“Ô

我需要帮助:(

# include <iostream>
# include <cstring>

const char alphabet[] ={'A', 'B', 'C', 'Ç', 'D', 'E', 'F', 'G', 'Ğ', 'H', 'I',
'İ', 'J', 'K', 'L', 'M', 'N', 'O', 'Ö', 'P', 'R', 'S',
'Ş', 'T', 'U', 'Ü', 'V', 'Y', 'Z', '0', '1', '2', '3',
'4', '5', '6', '7', '8', '9', '.', ',', ':', ';', ' '};
const int char_num =44;

void cipher(char word[], int count, int key)
{
int i = 0;
while(i < count) {
int ind = -1;
while(alphabet[++ind] != word[i]) ;
ind += key;
if(ind >= char_num)
ind -= char_num;
word[i] = alphabet[ind];
++i;
}
}

void decipher(char word[], int count, int key)
{
int i = 0;
while(i < count) {
int ind = -1;
while(alphabet[++ind] != word[i]) ;
ind -= key;
if(ind < 0)
ind += char_num;
word[i] = alphabet[ind];
++i;
}
}


int main()
{
char text[] = "ABC";
int len = strlen(text);
std::cout << text << std::endl;
cipher(text, len, 2);
std::cout << text << std::endl;
decipher(text, len, 2);
std::cout << text << std::endl;
system("pause");
return 0;
}

最佳答案

此问题是您的程序使用的编码与控制台预期的编码不同。默认情况下,Windows 是这样配置的;程序使用 cp1252 或 cp1254 之类的编码,而控制台期望使用 cp437 之类的编码。

Here's Microsoft 开发人员的一篇文章解释了这是为什么。

网上已经有很多信息,涵盖了修复编码不匹配的多种方法。

关于C++ 输出错误的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576061/

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