mrjbom
@mrjbom

Wchar_t в параметрах функции main?

Компилятор от Visual Studio 2017
Имеется такой код, к нему сразу же возникают вопросы.
#include <iostream>
#include <clocale>

using namespace std;

int main(int argc, char* argv[])
{
	setlocale(LC_ALL, "");
	cout << "Русский язык.\n";
	cout << argv[1] << endl;
	return 0;
}

Результат работы:
5cce01b1b4b0d031628551.png
Вопрос: Почему параметр верно отобразился ведь он типа char и должен был не поместиться в char?

Второй код.
#include <iostream>
#include <clocale>

using namespace std;

int main(int argc, wchar_t* argv[])
{
	setlocale(LC_ALL, "");
	wcout << L"Русский язык.\n";
	wcout << argv[1] << endl;
	return 0;
}

Результат работы:
5cce024a4ce3b379535542.png
Вопрос: Почему не отобразился текст параметра? Тип же верен.

Получается такое, что не верный тип, который не вмещает в себя символ юникода работает, а тип для юникода - нет.
  • Вопрос задан
  • 280 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему не отобразился текст параметра? Тип же верен.

Потому что недостаточно просто поменять тип параметра функции. Нужно ещё поменять то как она вызывается.
В венде для этого есть другое имя для main -- wmain.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы