Форум программистов, компьютерный форум CyberForum.ru

Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 215, средняя оценка - 4.70
Brodyg
 Аватар для Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
21.08.2010, 20:11     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #1
Всем привет, до этого пользовался DEV, решил пересесть на Visual Studio 2010 Express C++.
С++ еще не изучал, хочу сначала добить "С".
По умолчания при создании консольного проекта в редакторе прописан вот такой код:
C++
1
2
3
4
5
6
7
#include "stdafx.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}
С #include "stdafx.h" я разобрался,
а вот вторую строку ни как не магу понять int _tmain(int argc, _TCHAR* argv[])

Вопрос: Так что же означает эта строка? int _tmain(int argc, _TCHAR* argv[])
Извиняюсь за глупый вопрос.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.08.2010, 20:17     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #2
читаем рихтера про юникод
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.08.2010, 20:25     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #3
Хочется добавить, что эта фишка с _t несколько исключает мультиплатформенность кода, линёвский gcc, например, её не поймёт, поэтому старый добрый int main(int argc, char *argv[]) всё-же приятнее...
MikeSoft
Эксперт C++
 Аватар для MikeSoft
3782 / 1766 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
21.08.2010, 20:26     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #4
Brodyg, такая тема уже поднималась... ответ здесь: _tmain(...) вместо main(...) Почему?
Brodyg
 Аватар для Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
21.08.2010, 20:49  [ТС]     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #5
Если с (_tmain) ситуация немного прояснилась, то в случае с остальной частью строки остается прежней.
Для чего при создании проекта в скобках майн прописываются эти ключевики? (int argc, _TCHAR* argv[])
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
21.08.2010, 20:53     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #6
Тип данных _TCHAR определяется в файле Tchar.h условно.Если при построении определен символ _UNICODE, тип данных _TCHAR определяется как wchar_t. В противном случае (для сборок с однобайтовой и многобайтовой кодировкой) этот тип определяется как char.(Базовый тип данных wchar_t, обеспечивающий поддержку двухбайтовых знаков Юникод, является 16-битным аналогом 8-битного типа char со знаком.) Для многоязыковых приложений следует использовать функции семейства _tcs, в которых используются знаки _TCHAR, а не байты.Например, с помощью функции _tcsncpy выполняется копирование n знаков _TCHARs, а не n байтов.
гугл всемОгущий
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.08.2010, 20:53     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #7
Brodyg, Для запуска из консоли. Имена файлов и т.п.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 20:55     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #8
Для работы с аргументами командной строки.
argc - количество переданных аргументов командной строки.
argv - массив переданных аргументов командной строки. Если символ UNICODE определен, представляет собой массив юникодовских строк, в противном случае - обычных.
Brodyg
 Аватар для Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
21.08.2010, 22:19  [ТС]     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #9
Я так понял, что эта строка нацелена на то, что бы в программе можно был использовать символы UNICODE, например кириллицу и так далее. Я попробовал вывести на экран "Привет" но по прежнему результат оказался стандартным (непонятная каша).
Исправьте если не так понял.

Не хочу подымать вопрос о кириллице в консоли, такой цели нет.
Хочется просто понять цель этих символов в майн до конца. Это же люде в майкрософт сидели время тратили, думали, что же туда прописать полезного по умолчанию. И с моей стороны просто будет не справедливо, удалить эту строку даже не поинтересоваться, что же они хотели сделать полезного этим.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 22:21     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #10
Brodyg, вы не правы, "эта строка" нужна для работы с аргументами командной строки переданных при запуске приложения. Читайте про аргументы командной строки.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.08.2010, 22:21     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Brodyg,
Нет, просто параметры командной строки, которые будут передаваться программе, хранятся в виде строк, и в случае с приставками _t эти строки будут юникодовскими. На отображение информации в консоли это никак не влияет, только на представление в памяти.
alexey202020
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 18
10.06.2015, 11:56     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #12
Цитата Сообщение от Brodyg Посмотреть сообщение
Я попробовал вывести на экран "Привет" но по прежнему результат оказался стандартным (непонятная каша).
Чтобы не было каши пиши перед строкой текста: setlocale(LC_ALL "RUS");
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2015, 16:02     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[])
Еще ссылки по теме:

C++ Зачем преобразовывать itsVal в int, если эта переменная и так объявлена как тип int
C++ Int _tmain(int argc, _TCHAR* argv[]) и др
C++ В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,642
10.06.2015, 16:02     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
в случае с приставками _t эти строки будут юникодовскими
Чем они будут, зависит от настроек проекта.

А чтобы "Привет" выводился, надо сделать так:
C++
1
2
wcout.imbue(locale("rus_RUS.866"));
wcout << L"Привет";
Так же для wcin.
Yandex
Объявления
10.06.2015, 16:02     Что означает эта строка? int _tmain(int argc, _TCHAR* argv[])
Ответ Создать тему
Опции темы

Текущее время: 03:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru