Вопрос № 180480: Уважаемые эксперты! У меня вопрос такого плана. Пользователь запускает программу, указав числовой параметр в командной строке: prog.exe 123 Программа prog.exe должна получить этот параметр, присоединить к строке и вывести значение перемен...
Вопрос № 180492: Здравствуйте, уважаемые эксперты! В продолжение вопроса №180480 о слиянии строк в C++. Кое что начинает проясняться, но хотелось бы посмотреть реализацию следующего алгоритма на С++....
Вопрос № 180480:
Уважаемые эксперты! У меня вопрос такого плана. Пользователь запускает программу, указав числовой параметр в командной строке: prog.exe 123 Программа prog.exe должна получить этот параметр, присоединить к строке и вывести значение переменной на экран. Примерно так: str="Вы указали число: " $argv[1]; print str;
Вопросы такие: 1. Какой на ваш взгляд самый оптимальный способ вывести это экран? 2. Приведите пример реализации этого на C++. 3. Какой тип лучше всего подходит
для переменной str?
Ответ отправил: Micren (Профессионал)
Ответ отправлен: 28.10.2010, 20:31
Номер ответа: 263712
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 263712
на номер 1151 (Россия) |
Еще номера »
Вопрос № 180492:
Здравствуйте, уважаемые эксперты! В продолжение вопроса №180480 о слиянии строк в C++. Кое что начинает проясняться, но хотелось бы посмотреть реализацию следующего алгоритма на С++.
1. Выделяем память оператором new для последующего размещения в ней строки не более 100 байт. 2. Заносим в эту память строку "Ваше число: " 3. Добавляем к этой строке целое число из переменной типа int 4. Вызываем функцию с полученной
строкой, которая в качестве аргумента принимает const char *string
Например, на Перле я бы организовал это так: $a=10; $str="Ваше число: $a"; func($str);
Типа const char *string не бывает. Можно использовать const char *, а можно string, который является частью библиотеки STL и подключается с помощью #include <string>. В VS можно подключить MFC и использовать класс CString, в .Net Managed C++ тоже есть класс, аналогичный такому же в С#. Строковые литералы имеют тип const char *.
Подход, типичный для чистого C
Код:
int a=10; char* buf=malloc(100); sprintf(buf,"vashe chislo=%d",a); printf(buf); free(buf); return 0;
Если взять оператор new из С++, но старые средства вывода, получится
int main(int argc, char* argv[]) { int a=10; char* buf=new char[100]; sprintf(buf,"vashe chislo=%d",a); printf(buf); delete[]
buf; return 0; }
buf константой объявлять нельзя, потому что sprintf меняет строку, и программа не компилируется. Но ее можно передать в func. Обратный случай невозможен.
В STL строка является шаблоном basic_string, имеющим специализации string и wstring. Второй можно использовать для юникода. В качестве параметра конструктора string может выступать строковый литерал. string имеет то преимущество, что STL сама занимается пробле
мами выделения и освобождения памяти.
----- Я ни от чего, ни от кого не завишу.
Ответ отправил: Гаряка Асмик (Профессор)
Ответ отправлен: 29.10.2010, 20:14
Номер ответа: 263726
Оценка ответа: 5 Комментарий к оценке: Благодарю! Подробное и профессиональое решение!
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 263726
на номер 1151 (Россия) |
Еще номера »
Отвечает Micren (Профессионал) :
Здравствуйте, Калашников О.А.! К предыдущему решению могу добавить еще одно. Без оператора new и в чисто C++ стиле. Кроме того, если используете компиляторы от MS и Borland, можете попробовать нестандартную ф-ю itoa(). Либо написать собственную ф-ю преобразования, что не сложно.
Код:
/* * File: main.cpp * Author: Micren * * Created on 29 Октябрь 2010 г., 19:08 */ #include <iostream> #include <sstream> #include <cstring> #include <cstdio>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.