2

您好,我在这个程序中有一个错误,即 wcout 不是“std”的成员。我也使用了 iostream,但没有用。我有 Dev-C++ 4.9.9.2,我的操作系统是 XP SP3,我需要你的帮助。谢谢你的空闲时间。

#include <iostream>
#include <cstring>
#include <cwchar>
using namespace std;
const wchar_t 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(wchar_t 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(wchar_t 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()
{
    wchar_t text[] = L"ABJT;";
    int len = wcslen(text);
    std::wcout << text << std::endl;
    cipher(text, len, 2);
    std::wcout << text << std::endl;
    decipher(text, len, 2);
    std::wcout << text << std::endl;
    return 0;
}
4

2 回答 2

4

如果您使用 MinGW 进行编译,则尚不支持宽字符。如果您真的需要它,另一种方法是使用STLPort库作为 libstdc++ 的替代方案。

于 2013-03-22T23:44:50.997 回答
1

您正在使用的 Dev-C++ 4.9.9.2 附带7 年以上的 MinGW-gcc 3.4.2 ,可能没有 sftrabbit 建议的正确支持的宽字符。

如果您查看 sourceforge 上原始Dev-C++的顶部,您会发现它已被Orwell Dev-C++取代。如果您需要宽字符支持,我建议您使用它,因为它包含更新版本的 MinGW-gcc。

于 2013-03-23T00:29:39.607 回答