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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 215, средняя оценка - 4.70
Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
#1

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

21.08.2010, 20:11. Просмотров 29156. Ответов 12
Метки нет (Все метки)

Всем привет, до этого пользовался 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[])
Извиняюсь за глупый вопрос.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2010, 20:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что означает эта строка? int _tmain(int argc, _TCHAR* argv[]) (C++):

Что есть argc и **argv в функции int main(int argc, char **argv)? - C++
Здраствуйте, уважаемые кодеры! Что означает argc и **argv в функции int main(int argc, char **argv), ни как не могу понять эти переменные...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.? - C++
Не понимаю, с чего начинать. Заранее спс.

int main() и int _tmain(int argc, _TCHAR* argv[]) - C++
При создании нового консольного приложения Microsoft Visual С++ 2010 Express создает начальный шаблон #include "stdafx.h" int...

Подскажите пожалуйста с int main(int argc, char*argv[]) - C++
Если я правильно понимаю, то int argc это передача аргумента программе, т. е если argc>1 то программе передан хотя бы один аргумент, если...

Int _tmain(int argc, _TCHAR* argv[]) и др - C++
Добрый день! При компилировании кода, где присутствует данная строчка int _tmain(int argc, _TCHAR* argv) выдаёт ошибку: ...

что такое int argc, char *argv[] в качестве параметров главной (main) функции? - C++
И зачем

12
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
21.08.2010, 20:17 #2
читаем рихтера про юникод
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
21.08.2010, 20:25 #3
Хочется добавить, что эта фишка с _t несколько исключает мультиплатформенность кода, линёвский gcc, например, её не поймёт, поэтому старый добрый int main(int argc, char *argv[]) всё-же приятнее...
1
MikeSoft
Эксперт С++
3800 / 1776 / 85
Регистрация: 21.11.2009
Сообщений: 2,540
21.08.2010, 20:26 #4
Brodyg, такая тема уже поднималась... ответ здесь: _tmain(...) вместо main(...) Почему?
1
Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
21.08.2010, 20:49  [ТС] #5
Если с (_tmain) ситуация немного прояснилась, то в случае с остальной частью строки остается прежней.
Для чего при создании проекта в скобках майн прописываются эти ключевики? (int argc, _TCHAR* argv[])
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
21.08.2010, 20:53 #6
Тип данных _TCHAR определяется в файле Tchar.h условно.Если при построении определен символ _UNICODE, тип данных _TCHAR определяется как wchar_t. В противном случае (для сборок с однобайтовой и многобайтовой кодировкой) этот тип определяется как char.(Базовый тип данных wchar_t, обеспечивающий поддержку двухбайтовых знаков Юникод, является 16-битным аналогом 8-битного типа char со знаком.) Для многоязыковых приложений следует использовать функции семейства _tcs, в которых используются знаки _TCHAR, а не байты.Например, с помощью функции _tcsncpy выполняется копирование n знаков _TCHARs, а не n байтов.
гугл всемОгущий
1
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
21.08.2010, 20:53 #7
Brodyg, Для запуска из консоли. Имена файлов и т.п.
1
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 20:55 #8
Для работы с аргументами командной строки.
argc - количество переданных аргументов командной строки.
argv - массив переданных аргументов командной строки. Если символ UNICODE определен, представляет собой массив юникодовских строк, в противном случае - обычных.
1
Brodyg
0 / 0 / 0
Регистрация: 20.07.2010
Сообщений: 29
21.08.2010, 22:19  [ТС] #9
Я так понял, что эта строка нацелена на то, что бы в программе можно был использовать символы UNICODE, например кириллицу и так далее. Я попробовал вывести на экран "Привет" но по прежнему результат оказался стандартным (непонятная каша).
Исправьте если не так понял.

Не хочу подымать вопрос о кириллице в консоли, такой цели нет.
Хочется просто понять цель этих символов в майн до конца. Это же люде в майкрософт сидели время тратили, думали, что же туда прописать полезного по умолчанию. И с моей стороны просто будет не справедливо, удалить эту строку даже не поинтересоваться, что же они хотели сделать полезного этим.
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
21.08.2010, 22:21 #10
Brodyg, вы не правы, "эта строка" нужна для работы с аргументами командной строки переданных при запуске приложения. Читайте про аргументы командной строки.
1
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
21.08.2010, 22:21 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Brodyg,
Нет, просто параметры командной строки, которые будут передаваться программе, хранятся в виде строк, и в случае с приставками _t эти строки будут юникодовскими. На отображение информации в консоли это никак не влияет, только на представление в памяти.
4
alexey202020
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 18
10.06.2015, 11:56 #12
Цитата Сообщение от Brodyg Посмотреть сообщение
Я попробовал вывести на экран "Привет" но по прежнему результат оказался стандартным (непонятная каша).
Чтобы не было каши пиши перед строкой текста: setlocale(LC_ALL "RUS");
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,480
10.06.2015, 16:02 #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
в случае с приставками _t эти строки будут юникодовскими
Чем они будут, зависит от настроек проекта.

А чтобы "Привет" выводился, надо сделать так:
C++
1
2
wcout.imbue(locale("rus_RUS.866"));
wcout << L"Привет";
Так же для wcin.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2015, 16:02
Привет! Вот еще темы с ответами:

Почему _TCHAR выдает ошибку int _tmain(int argc, _TCHAR* argv[]) - C++
// ConsoleApplication42.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include&lt;iostream&gt; ...

Аргументы main(int argc, char *argv[]) - C++
Эксперты в с++,объясните пожалуйста новичку примерно понял как использовать эти аргументы,но не как не могу понять куда писать то что он...

Что означает эта запись? int(*px)[5] = 0; cout << px; - C++
Добрый день товарищи, недавно впал в ступор. Есть запись вида int(*px) = 0; cout &lt;&lt; px+2; Я трактовал так: Мы создаем указатель на...

Что означает int pos = 0; int value = 5; в данном коде? - C++
#include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; void mass(int y); void main() { int y;


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

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
10.06.2015, 16:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru