我有一个实验室工作从我的大学-我必须打印ASCII表与乌克兰符号,然后使从乌克兰语到英语的音译,但我遇到了问题。
所以,我要在C++
中打印ASCII
扩展表,它必须包含乌克兰字母(西里尔字母)。我在KDE neon 5.26
linux发行版,它是基于Ubuntu
。终端显然是KDE的Console
。
我写的代码:
#include<iostream>
int main(void) {
for (unsigned char i = 32; int(i) < 255; i++) {
std::cout <<" [" << i << "] " << int(i) << " t";
if ((i-1)%5 == 0)
std::cout << "n";
}
char ua_str[] = "Привіт"; // hello in ukrainian
std::cout << "nn" << ua_str << "n" << ua_str[4] << " is " << int(ua_str[4]) << "n";
return std::cout.fail() ? EXIT_FAILURE : EXIT_SUCCESS;
}
用g++ lab3.cpp
编译它产生这样的输出:
我很感兴趣,它是如何打印char ua_str[]
而不打印ua_str[4]
的。
终端编码设置为UTF8
,我在终端编码设置中找不到ASCII
。如果我用./a.out > abc.txt
将输出重定向到abc.txt
文本文件并打开它,它看起来像下面的:
所以,我在终端运行locale -a
:
然后我试图在for
循环之前将std::setlocale(LC_ALL, "uk_UA.utf8");
添加到int main(void)
中的程序中,但它没有改变任何东西,输出是相同的…
我稍后要制作音译脚本,但无法打印并正常使用乌克兰字母…
所以,问题是:如何在KDE neon 5.26
上的C++
中打印和使用西里尔字母汽车?
我想我已经试过了我能做的一切,但它不起作用。请帮帮我。
这是乌克兰语字符集KOI8-U的rtf: https://www.rfc-editor.org/rfc/rfc2319.html ....您可以将std ascii表映射到所需的西里尔字符。另一个选择是使用yandex之类的工具。https://yandex.com/dev/translate/这是一个api翻译,但我认为这是一个服务收费,但有使用限制或只是一个临时密钥,如果没有支付。它对于翻译非常有用,并且是一个简单的api。