Стандарт распознает точки входа int main()
и int main(int, char* [])
, и не существует версии функции в Юникоде, за исключением, конечно, если это предусмотрено реализацией, такой как wmain
для windows.
I есть код, который строго использует «широкие» строки ie. wchar_t
и std::wstring
, ни один LO C не использует тип char
.
Также весь «вывод программы» печатается с помощью std::wcout
.
Теперь я понимаю, что когда программа запускается, ее поток будет установлен на «широкий» поток, и даже если где-то в коде вместо 1015 * появится код std::cout
, вывод может быть неправильным.
Теперь мой первый недоразумение заключается в том, что если пользователь запускает несколько инструментов командной строки в одном терминале (ie. cmd.exe), где одна программа использует широкие строки, а другая использует строки ASCII, то каково поведение терминала?
это обрабатывает оба потока просто отлично? Широкий поток и не широкий поток связаны с программой, а не с терминалом?
Во-вторых, моя главная проблема заключается в том, что моя программа «Юникод» ожидает ввода данных пользователем, который, скорее всего, будет char
, потому что int main(int, char* [])
принимает char
строка, но мой код использует wide
строки.
Какие у меня варианты? мне нужно преобразовать входные строки не в Юникоде в широкие строки?
И что произойдет, если я использую int wmain(int, wchar_t* [])
на windows? как узнать, будет ли терминал интерпретировать ввод пользователя как широкие символы и пересылать их в мою точку входа?
что если пользователь скопирует / вставит строку ASCII в консоль в качестве ввода в мою точку входа?
Таким образом, мои вопросы таковы: ввод и вывод консольной программы char и wchar_t как в переносном, так и в переносном коде, по стандарту отсутствует широкая основная функция, что меня больше всего смущает в сочетании с различными терминалами.
edit
Для ясности,
- Я хочу использовать стандартные
main
и широкие строки. - мой код использует широкую строку.
- моя программа ожидает ввода пользователя и записывает вывод. так как лучше всего справиться с этим?
- Является ли
wmain
единственным решением для получения ввода Unicode и как терминалы работают в отношении Unicode против Non Unicode с различными программами в одном сеансе консоли.