В настоящее время я работаю над проектом на 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++
Программы на C++. Форум разработчиков
-
Anonymous
1741353064
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.
Подробнее здесь: [url]https://stackoverflow.com/questions/79492386/stdcout-problems-with-specific-german-characters-%c3%84-%c3%96-%c3%9c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия