LINUX.ORG.RU

c++ string


0

0
если в командной строке между параметрами _пробел_ воспринимается как разделитель опций, то почему когда я пытаюсь передать этот самый пробел: string param=" "; или string param=' '; прога которой передаются параметры ругается на что-то типа "ошибка опций командной строки"? пробел ведь он и есть пробел..
★★★★★
О мой хвост, в main передается null terminated массив состоящий из аргументов, уже разделенных.
wfrr ★★☆
()
Ответ на: комментарий от dilmah
и ведь не спят :)
так как передать этот параметр _пробел_? остальные символы передаются корректно, или что почитать чтоб доступным языком?
S_Paul ★★★★★
() автор топика
Ответ на: комментарий от S_Paul
./prog qwe\ asd

./prog "qwe asd"

./prog 'qwe asd'

Это ты еще $ не пробовал передавать..

sergej ★★★★★
()
Ответ на: комментарий от vyv
код показывать стыдно...:) он.. своеобразен
-пап а кто президент России?
-о сынок. стыдно не знать.
-пап что с тобой?
-стыдно..

кароч "программа" выпытывает у юзера параметры кодирования и передаёт их mencoder'y ,собирает в виде строк(здесь же подсказали).
S_Paul ★★★★★
() автор топика
Ответ на: комментарий от S_Paul
Итак, дело понемногу проясняется. Есть "прога", mencoder, и "программа", нечто постыдное. Программа запускает прогу с какими-то аргументами, а прога ругается, что аргументы не понятны.

Остаётся разузнать, каким способом из программы вызывается прога (какой функцией стандартной библиотеки), какие аргументы передаются в эту функцию, и какой результат хотелось бы получить, и тогда, наверное, уже можно будет ответить на поставленный вопрос.

alexsaa
()
Ответ на: комментарий от alexsaa
я так понимаю, что mencoder видит пробел который я передаю ему с помощью string как нечто другое,хотя пробелы вставленные автоматически между параметрами массива строк понимает как надо

char *encode[25]={(char*)mencoder.c_str(),
                  (char*)inputFile.c_str(),
                  (char*)ss.c_str(),
                  (char*)ssStr.c_str(),
                  (char*)oac.c_str(),
вот такую строку  (char*)space.c_str(), например, не понимает
                  (char*)acopy.c_str(),
                  (char*)mp3lame.c_str(),
                  (char*)lameopts.c_str(),                  
                  (char*)lameStr.c_str(),
строки space нет, это для примера, если вставляю пробел в параметрах ругается так-же.
S_Paul ★★★★★
() автор топика
Ответ на: комментарий от S_Paul
> Программа запускает прогу с какими-то аргументами, а прога ругается, что аргументы не понятны.

Логично. Со строкой space.c_str(), это соотвествует вот такому:

mencoder input-file -ss blah-blah-blah -oac " " acopy mp3lame -lameopts lameStr

Т.е. у mencoder'а просят аудиокодек с названием <один пробел>, которого ессно нет.

anonymous
()
Ответ на: комментарий от anonymous
acopy тож пустой если выбирается mp3 кодирование, на него и ругается(если пусто -"" и если пробел -" " и -' ' тоже)
как побороть?
S_Paul ★★★★★
() автор топика
Ответ на: комментарий от anonymous
перед передачей параметров mencoder'y делаю вывод строки кавычек нет, строка как строка с пробелами меж параметров, но ругается
S_Paul ★★★★★
() автор топика
Ответ на: комментарий от S_Paul
с пробелами "решил" -переставил их после всех lame опций и xvid, а можно как-нибудь передать нек-е параметры не string a int?(execvp)
S_Paul ★★★★★
() автор топика
Ответ на: комментарий от S_Paul
сделай массив encode динамически заполняемым. Если параметр пустой, то он в массив не заносится. Потом скармливаешь этот массив execvp.
alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov
на счёт int to string так и делаю,я имел ввиду что бы именно int...
а на счёт динамически заполняемого массива щас погуглю, спасибо
S_Paul ★★★★★
() автор топика
Ответ на: комментарий от alex_custov
2alex_custov : а ещё вопрос/хинт можно?
S_Paul ★★★★★
() автор топика
Ответ на: комментарий от alex_custov
имеется кус кода:
{ 
 mp3lame="mp3lame";
 lameopts="-lameopts";
 vbr="vbr=";
 br=":br=";
 acopy=" ";
 cout<<"vbr mode [0-4]"<<endl
     <<"0 cbr(const bitrate)"<<endl
     <<"1 mt"<<endl
     <<"2 rh"<<endl
     <<"3 abr(average bitrate)"<<endl
     <<"4 mtrh"<<endl
     <<"vbr : ";
 vbrType=getString(0,4);
 cout<<"mp3 bitrate(32-320) : ";
 lameBr=getString(32,320);
 lameStr=vbr+vbrType+br+lameBr;
}    
cout<<lameStr<<endl;//контроль. здесь видим ..vbr=x:br=xxx 
а в строке на выполнение :br=xxx пропадает
причём если vbr=x задать вручную а не через ф-ю норм.

да "код" странный, но и прога первая...
S_Paul ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.