Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - C++ Другие переменные в строке

Ответить
Настройки темы
C/C++ - C++ Другие переменные в строке

Аватара для Acuna

Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Acuna
Дата: 15-04-2014
Всем привет!

Переписываю свой батник на плюсы. Все уперлось в банальный вопрос:

Вот у меня есть такой кусок:

Код: Выделить весь код
char file_name = 'что-то';
string others = 'еще что-то';
string params = "file.exe -name  \"file_name\" -p =\"others\""
Тут file_name и other - переменные. Их значение может быть определено где-то ранее, может вводиться с клавиатуры, или как-то еще. Говоря проще, переменная string на месте этих переменных должна иметь значения этих переменных. Она потом должна в WinExec засунуться так:

Код: Выделить весь код
WinExec (params.c_str (), 1);
Можно ли это как-то осуществить? Просто мягко говоря, это как бы суть программы - запуск других консольных утилит с параметрами Заранее благодарен!

Отправлено: 01:45, 15-04-2014

 

Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Если в лоб, то можно получить params так:
Решение в лоб
Код: Выделить весь код
#include <iostream>
#include <string>

int main()
{
    char file_name[] = "1.txt";
    std::string others = "something else";
    std::string params = "file.exe -name \"" + std::string(file_name) +
                         "\" -p =\"" + others + "\"";
    std::cout << params << std::endl;

    return 0;
}

VS под руками нет, так что с WinExec посмотрите сами.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:26, 15-04-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Acuna

Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


User001, А! Хм... Таки... А вот синтаксис JS я использовать не додумался... Благодарю!

Тогда сразу хочу спросить: а что, если эти переменные я хочу использовать несколько раз в разных местах? Просто прога при этом компилируется без ошибок, но при запуске почему-то сразу вылетает...

Отправлено: 17:03, 15-04-2014 | #3


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата Acuna:
А вот синтаксис JS я использовать не додумался... »
Хмм, это же самый обычный C++...
Цитата Acuna:
если эти переменные я хочу использовать несколько раз в разных местах »
А что пишет? Код тогда покажите.

Отправлено: 15:39, 16-04-2014 | #4


Аватара для Acuna

Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


User001, я просто PHP/JS программист, а это я просто свой старый батник переписываю для души)

Проблема возникает, когда какая-либо переменная уже включает в себя какие-либо переменные. То есть с таким куском все нормально:

Код: Выделить весь код
string copyright = "(c) 2013-2014  Acuna.";
string params = "\"Created with " + string (copyright) + "\"";
тогда как при

Код: Выделить весь код
string copyright = "Console Audio Tools v" + version + "  " + name + "";
string params = "\"Created with " + string (copyright) + "\"";
программа вылетает сразу после запуска(

Отправлено: 00:06, 19-04-2014 | #5


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата Acuna:
Проблема возникает, когда какая-либо переменная уже включает в себя какие-либо переменные. »
Насчет включает - не совсем так, у вас оно просто копируется (или присоединяется). И дальше не должно зависеть от скопированных переменных.
Цитата Acuna:
string copyright = "Console Audio Tools v" + version + " " + name + "";»
+ "" Не обязательно.
Насчет вылетает - видимо, надо смотреть функцию целиком.
Вот это, например, не вылетает.
читать дальше »
Код: Выделить весь код
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string name = "Fedor";
    string version = "0.0.1";
    string copyright = "Console Audio Tools v" + version + "  " + name + "";
    string params = "\"Created with " + string (copyright) + "\"";
    cout << copyright << endl;
    cout << params << endl;
    return 0;
}

Отправлено: 08:11, 21-04-2014 | #6

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Acuna, ещё вариант (больше параметризован, можно играть с синтаксисом):
Код: Выделить весь код
void replace_all(string& str, const string& samp, const string& repl) {
	static unsigned const nowhere=string::npos;
	unsigned pos, samp_len=samp.length(), repl_len=repl.length();
	for(pos=0; nowhere!=(pos=string.find(samp, pos)); pos+=repl_len) {
		string.replace(pos, samp_len, repl);
	}
}

string
  others = "...",
  params = "...",
  cmdline = "file.exe -name  \"$(params)\" -p =\"$(other)\"";

string eval=cmdline;
replace_all(eval, "$(params)", params);
replace_all(eval, "$(other)", other);

WinExec(..., eval.c_str(), 1);

Но вообще советую поиграться, выработать навыки работы со строками и сделать как было, через батник. Имхо было лучше
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:23, 22-04-2014 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - C++ Другие переменные в строке

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Переменные RasKolbas Общий по Linux 8 23-07-2010 18:12
Разное - [PHP] Переменные CXREF Программирование и базы данных 2 16-06-2009 08:15
Переменные окружения Danwer Общий по FreeBSD 2 16-09-2007 14:47
$OEM$ Переменные Iliander Автоматическая установка Windows 2000/XP/2003 1 08-03-2007 04:53
Переменные в PHP Guest Программирование и базы данных 6 11-09-2003 04:28




 
Переход