В настоящее время я работаю над проектом на 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
Std :: cout Проблемы с конкретными немецкими персонажами (ä, ö, ü) ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Можно «используя пространство имен std;» и «std::cout» использоваться вместе?
Anonymous » » в форуме C++ - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Std :: cout ошибочное поведение при попытке печатать std :: векторные элементы [дублировать]
Anonymous » » в форуме C++ - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-