0

我正在制作一种加密算法,但是在处理“à”、“é”等特殊字符时遇到了一个可怕的问题。

每当我在内存中复制或类似的东西时,这个问题就会出现。我做了这个小代码来解释它:

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

int main() {

    char ar[]="à";
    char bf[]="a";
    char cd;

    cout <<"Before:\n" << ar <<"\t" <<bf << endl;

    cd=ar[0];
    ar[0]=bf[0];
    bf[0]=cd;

    cout <<"After:\n" << ar  <<"\t" <<bf << endl;

}

正如我所知道的那样,我无法解决它。我该如何解决这个问题?

4

2 回答 2

1

据我所知,我们无法à在 ascii 代码中找到字符。因此,请使用 wchar_t 而不是 char。因为char只有8位,只能处理256个不同的字符。

im dealing with arrays in ma code ...and using wchar_t to store the char in cd didn't help

在这种情况下,使用wchar_t数组。

声明wchar_t字符串

wchar_t wptr[] = L"Your String";

声明wchar_t字符

`wchar_t wc=L'A';

声明一个 wchar_t 字符数组

 `wchar_t aa[]={L'A',L'B'};`

所以你的代码变成

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

int main() {

wchar_t ar[]=L"à";
wchar_t bf[]=L"a";
wchar_t cd;

cout <<"Before:\n" <<ar <<"\t" <<bf <<endl;

cd=ar[0];
ar[0]=bf[0];
bf[0]=cd;

cout <<"After:\n" <<ar  <<"\t" <<bf <<endl;

}

这解决了问题

于 2013-06-01T16:04:28.897 回答
0

如果您在 Windows 操作系统上从 DOS 命令提示符运行此程序,则必须将命令窗口设置为使用 ANSI 兼容的活动代码页。以下代码页适用于我的系统:

chcp 1252

在运行程序之前输入 chcp 命令。

于 2013-06-01T16:17:54.900 回答