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

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

Войти
Регистрация
Восстановить пароль
 
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 523
#1

Формирвоать имя файла в зависимости от входных параметров - C++

11.04.2014, 22:41. Просмотров 235. Ответов 5
Метки нет (Все метки)

Такой вот глупенький вопрос. Нужно формировать имя выходного файла в зависимости от передаваемых аргументов командной строки. Например, запускаем программу
C++
1
program.exe 20 50
Выходной файл должен получить имя 20_50.txt или даже вообще без расширения.
Пыталс сделать вот так:
C++
1
2
char* str = "_";
char* strFileName=strcat(strcat(argv[1],str),argv[2]);
Но в итоге получаю только 20_.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 22:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Формирвоать имя файла в зависимости от входных параметров (C++):

Напишите (консольную) программу, принимающую на вход имя файла и набор параметров. В зависимости от параметров программа должна работать в трёх режима - C++
Вообщем такое же задание Добавлено через 2 минуты Напишите (консольную) программу, принимающую на вход имя файла и набор...

Присваивание входных параметров в конструкторе - C++
Добрый день. Недавно наткнулся на код такого типа #define MaxSize 100 class Test { private: int Size; public: ...

Проверка правильности входных параметров конструктора - C++
Как проверить допустимость передаваемых входных параметров конструктора класса? Точнее, проверку параметров конечно, можно сделать в теле...

Ошибка при попытке инициализации входных параметров в конструкторе - C++
Доброго времени. При попытке инициализировать поле State макроопределением компилятор выдаёт ошибку. При инициализации константой всё...

Передать целый массив в качестве входных параметров для функции main()? - C++
Было рабочее оконное приложение Qt, теперь всю реализацию "впихнуть" в консольное приложение C++(( Смысл: пользователь вводит строки,...

Функция, возвращающая сумму двух входных параметров (если первый параметр четный) или их разность - C++
разработайте заданную функцию( 1) и продемонстрируйте работу этой функции, сделав в главной программе несколько вызовов функции с разными...

5
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.04.2014, 23:17 #2
Для начала надо выделить память под строку, где будет расположен результат. Например:
C++
1
char filename[1000]; // достаточного размера или использовать std::string
А уже потом формировать строку:
C++
1
2
3
strcpy( filename, argv[1] ); // копируем первый аргумент в строку
strcat( filename, "_" ); // добавляем подчеркивание
strcat( filename, argv[2] ); // добавляем второй аргумент
Это правда не особо эффективно. Лучше использовать sprintf() или, раз уж мы в разделе C++ - std::stringstream.
1
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 523
12.04.2014, 00:01  [ТС] #3
А более... изящного что ли... решения нет? Как то громоздко получается
C++
1
2
3
4
5
strFile << argv[1] << "_" << argv[2];
std::string tmp = strFile.str();
const char* strFileName = tmp.c_str();
std::ofstream outFile;
outFile.open(strFileName, std::ofstream::out|std::ofstream::trunc);
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.04.2014, 00:05 #4
nullpointer, из того что у Вас написано, 3 строки лишние, можно сказать:
C++
1
2
strFile << argv[1] << "_" << argv[2];
std::ofstream outFile( strFile.str().c_str(), std::ios_base::out|std::ios_base::trunc);
В C++11 есть вариант, принимающий std::string
0
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 523
12.04.2014, 00:25  [ТС] #5
Tulosba, об этом я не подумал))

Не думаю что стоит мудрить с С++11, тем более что используемая версия gcc 4.1 и он просто не поймет С++11.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.04.2014, 00:29 #6
Ну остался ещё вариант со sprintf:
C++
1
sprintf( filename, "%s_%s", argv[1], argv[2] );
0
12.04.2014, 00:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2014, 00:29
Привет! Вот еще темы с ответами:

Как будет выглядеть заголовок функции, принимающей в качестве входных параметров два целых числа и возвращающей число с плавающей запятой двойной точн - C++
1. int a, int b: f ( double ) 2. double f ( int a, int b ) 3. int f ( double a, int b ) 4. f ( int a, int b, return double ) 5....

Изменение параметров изображения в зависимости от положения ползунка (Opencv) - C++
Помогите пожалуйста написать класс, который будет изменять яркость, насыщенность и цветовую гамму изображения в зависимости от положения...

В зависимости от параметров квадратного уравнения вывести одно из сообщений - C++
В зависимости от параметров a, b, c квадратного уравнения вывести одно из сообщений: &quot;корней нет&quot;, &quot;корни действительные и различные&quot;,...

Что делать если в зависимости от вводимых параметров код должен меняться? - C++
Итак имеется задача: В зависимости от вводимого N выводить на экран все возможные векторы длины от N до 1, при этом для каждой отдельной...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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