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

Вывод аргументов командной строки - C++

Восстановить пароль Регистрация
 
Kolganov
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 17
14.02.2014, 08:53     Вывод аргументов командной строки #1
Доброго времени.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int i;
    for (i = 0; i < argc; i++)
        cout << argv[i] << '\n';
    return 0;
}
Среда: VS 2013.
Аргументы задал: 123 hello world
Выводит:

0165CDAC
0165CE92
0165CE9A
0165CEA6


Пробовал поменять тип argv[] с _TCHAR* на char* - не намного лучше (выводятся первые символы аргументов).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2014, 08:53     Вывод аргументов командной строки
Посмотрите здесь:

C++ Разбор аргументов командной строки
C++ ввод аргументов командной строки.
Объясните смысл аргументов командной строки argc и argv C++
C++ Напишите, скомпилируйте и выполните программу, которая выводит перечень аргументов командной строки в обратном порядке
Передача аргументов командной строки функции main() C++
C++ Передача аргументов командной строки
Использование аргументов командной строки C++
C++ Вычислить сумму чисел, передаваемых программе в виде аргументов командной строки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14216 / 6231 / 988
Регистрация: 02.05.2013
Сообщений: 10,390
Завершенные тесты: 1
14.02.2014, 09:50     Вывод аргументов командной строки #2
Проект, видимо, настроен на использование Unicode.
Значит, TCHAR - это wchar_t, а _tmain - это wmain и командная строка
тоже приходит в Unicode, в "широких" символах (2 байта на символ).
Ну а дальше Вы пытаетесь с ней работать, как с char-строкой, из-за
чего возникают кракозябры.

Пара ссылок по теме:

main: Program Startup
http://msdn.microsoft.com/en-us/library/6wd819wh.aspx

Using wmain Instead of main
http://msdn.microsoft.com/en-us/library/xyk2axs5.aspx

Решение 1.
Изменить cout на wcout. Плюсов особо никаких, если в настройках
проекта поставить Multi-Byte Character Set, все снова перестанет работать.

Решение 2.
Изменить TCHAR на char, а _tmain на main.
Так будет работать, но командная строка придет в ANSI-кодировке.
Это не всегда хорошо с точки зрения переносимости проекта на
другие локализации (как и ANSI-кодировки в целом).

Решение 3.
Забыть вообще про аргументы main и использовать платформенное
средство - GetCommandLineW/CommandLineToArgvW.
Рекомендую именно этот вариант.
Yandex
Объявления
14.02.2014, 09:50     Вывод аргументов командной строки
Ответ Создать тему
Опции темы

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