Std :: cout Проблемы с конкретными немецкими персонажами (ä, ö, ü)C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Std :: cout Проблемы с конкретными немецкими персонажами (ä, ö, ü)

Сообщение Anonymous »

В настоящее время я работаю над проектом на Raspberry Pi с помощью C ++. У меня есть проблемы с потоковой передачей немецких специальных персонажей к терминалу. Я написал функцию logger :: log () и использую ее внутри ClassMethod. Если я позвоню в определенный ClassMethod с помощью logger :: log () включено, он не печатает специальные символы. < /P>
CodeParts: < /p>

//logger.cpp

void logger::terminal(const std::string &message)
{
std::cout

void FileProcessor::update()
{
if (!loadFile())
{
return;
}
setHash();

if (hasFileHashChanged())
{
processFile();
}
}

< /code>
in main () я вызову logger :: log () дважды непосредственно с включенным ä ö ü, и это работает. Но вызов FileProcessor :: update () не работает с специальным чар. < /P>
int main()
{
logger::log(loglevel::levels::TERMINAL,"ÄÜÖ\n"); //special chars work
FileProcessor fileproc("../ConfigDatei/konfiguration.json");
int counter = 0;
while (counter < 20)
{
fileproc.update(); // special chars in setHash() doesnt work
if (fileproc.hasFileHashChanged())
{
logger::log(loglevel::levels::TERMINAL,"ÄÄ Hash changed\n"); //special chars work
}
std::this_thread::sleep_for(std::chrono::seconds(20));
++counter;
}
std::cout
Вывод: первая и последняя работа, 5-8 строка, она не работает < /p>

$ ./anwendung
ÄÜÖ
Enter loadFile().
Enter loadFile().
sethash?
Datei hat sich ge�ndert, neuer Hash gesetzt.
Neuer Wandler hinzugef�gt: ain0
Neuer Wandler hinzugef�gt: ain2
Neuer Wandler hinzugef�gt: ain1
ÄÄ Hash changed

< /code>
imbue () не помогла. Я попробовал это сначала в функции logger :: terminal (), а также глобальный в logger.cpp как < /p>

namespace
{
struct InitLogger
{
InitLogger()
{
std::cerr.imbue(std::locale("de_DE.UTF-8"));
std::cout.imbue(std::locale("de_DE.UTF-8"));
}
};
static InitLogger loggerInitializer;
}

< /code>
Локаль приглашения показывает < /p>

locale
LANG=de_DE.UTF-8
LANGUAGE=de_DE
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=de_DE.UTF-8

< /code>
Другая система Infos < /p>
Operating System: Debian GNU/Linux 12 (bookworm)
Kernel: Linux 6.6.63-v8+
Architecture: arm64

$ g++ --version
g++ (Debian 12.2.0-14) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Подробнее здесь: https://stackoverflow.com/questions/794 ... %96-%c3%9c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»