Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

CradleA
Статус: Профессор
Рейтинг: 45
∙ повысить рейтинг »
solowey
Статус: Студент
Рейтинг: 26
∙ повысить рейтинг »
mklokov
Статус: 6-й класс
Рейтинг: 23
∙ повысить рейтинг »

∙ С / С++

Номер выпуска:1942
Дата выхода:25.08.2018, 20:15
Администратор рассылки:Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Подписчиков / экспертов:38 / 26
Вопросов / ответов:3 / 6

Консультация # 168568: Здраствуйте, подскажите как обединить char* и int в одну строку, т.е. к примеру есть:
char* rez1 = "Rezultat: ";
int rez = 8
...
Консультация # 157835: Уважаемые эксперты, подскажите, пожалуйста, где ошибки. Условие задачи такое: Дан массив из 20 целых чисел со значениями от 1 до 20. Необходимо: написать функцию, разбрасывающую элементы массива произвольным образом; создать случайное число из того же диапазона и найти позицию этого случайного числа в массиве; отсортировать элем...
Консультация # 34541: Добрый день. Пишу на BCB 6/0 обработчик ServerSocketClientRead. Размер кода большой. Может ли возникать ошибка "Unable to invoke Code Completion due to errors in source code" если в функции примерно 600 строчек =)? (Методом научного тыка обнаружил, что в начале кода ошибки нет. Она появляется где-то в середине кода)...

Консультация # 168568:

Здраствуйте, подскажите как обединить char* и int в одну строку, т.е. к примеру есть:

char* rez1 = "Rezultat: ";
int rez = 8

как получит такую строку: char* "Rezultat: 8"? т.е. просто обединить. Желательно кусок кода :)
Заранее спасибо.

Дата отправки: 30.05.2009, 18:25
Вопрос задал: Станислав
Всего ответов: 3
Страница онлайн-консультации »


Консультирует AMV007:

Здравствуйте, Станислав.
ну например :
char test[255];
memset(test,0,sizeof(test));
char* rez1 = "Rezultat: ";
int rez = 8;
sprintf(test,"%s %d", rez1, rez);
в test будет то, что вы хотите

Консультировал: AMV007
Дата отправки: 30.05.2009, 20:26
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Navnav:

Здравствуйте, Станислав.

#include <iostream.h>

void main()
{
char* rez1 = "Rezultat: ";
int rez = 8;
cout << rez1 << rez << endl;
}

Оператор cout является стандартным потоком вывода.
Поток – свойство, отражающее перемещение данных от источника к приемнику.
Стандартный поток вывода направлен на экран, а поток ввода направлен с клавиатуры.
Операция << -- это операция вставки в поток.
Она копирует содержимое переменной, стоящей справа от нее в поток, стоящий слева.

Консультировал: Navnav
Дата отправки: 30.05.2009, 21:48
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Micren:

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

Я могу предложить Вам несколько методов решения Вашей задачи.
1. Выделить место для результата с запасом на число.

#include <limits>
#include <iostream>
#include <cstring>

using namespace std;

#define RESULT_STR "Result : "

int main()
{
	char str[sizeof(RESULT_STR)+numeric_limits<int>::digits10+1]=RESULT_STR;
	int res=8;
	itoa(res,str+sizeof(RESULT_STR)-1,10);
	cout<<str<<endl;
	system("PAUSE");
	return 0;
}


2.Использовать возможности STL C++. Например тип данных class string вместо char*. Этот класс обладает несравненными преимуществами по сравнению с char*

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main()
{
	string str="Result : ";
	int res=8;
	ostringstream stream;
	stream<<str<<res;
	str=stream.str();
	cout<<str<<endl;
	system("PAUSE");
	return 0;
}

Не правда ли, так лучше. Кроме того строковые классы легко поддерживают различные виды операций.
Так, например, выглядит конкатенация:
#include <iostream>
#include <string>

using namespace std;

int main()
{
	string str="Result : ";
	string res="8";
	cout<<str+res<<endl;
	system("PAUSE");
	return 0;
}

Все приведенные примеры выдают один и тот же результат:
Result : 8

Консультировал: Micren
Дата отправки: 30.05.2009, 23:22
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 157835:

Уважаемые эксперты, подскажите, пожалуйста, где ошибки. Условие задачи такое:
Дан массив из 20 целых чисел со значениями от 1 до 20.
Необходимо:
написать функцию, разбрасывающую элементы массива произвольным образом;
создать случайное число из того же диапазона и найти позицию этого случайного числа в массиве;
отсортировать элементы массива, находящиеся слева от найденной позиции по убыванию, а элементы массива, находящиеся справа от найденной позиции по возрастанию.

Числа разбросал, случайное число находит, позицию его тоже,а вот сортировать не получается.
Пишу на Visual Studio C++ 2008 Express Edition. Приложение прилагаю.

Дата отправки: 16.01.2009, 01:52
Вопрос задал: Васильев Дмитрий
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Micren:

Здравствуйте, Васильев Дмитрий!
Решил не искать в Вашей программе ошибки, а написать свою с нуля, продемонстрировав Вам некоторые методы программирования. Программа хорошо структурирована и снабжена комментариями. Разобраться будет не трудно.
Успехов!

Приложение:

Консультировал: Micren
Дата отправки: 16.01.2009, 03:54
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 34541:

Добрый день. Пишу на BCB 6/0 обработчик ServerSocketClientRead. Размер кода большой. Может ли возникать ошибка "Unable to invoke Code Completion due to errors in source code" если в функции примерно 600 строчек =)? (Методом научного тыка обнаружил, что в начале кода ошибки нет. Она появляется где-то в середине кода)

Дата отправки: 01.02.2006, 12:42
Вопрос задал: Dadrum
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Tigran K. Kalaidjian:

Здравствуйте, Dadrum!

Да. Она можен возникать от большого размера кода. Такой вот глюкавый анализатор кода...

Консультировал: Tigran K. Kalaidjian
Дата отправки: 01.02.2006, 14:45
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Лучников Юрий Владимирович:

Здравствуйте, Dadrum!
Может ли возникать ошибка "Unable to invoke Code Completion due to errors in source code" если в функции примерно 600 строчек =)?
Не вижу связи между размером кода и возможностью возникновения данной ошибки;)
А ищутся ошибки не методом научного тыка а использованием отладчика (дебаггера) ;)

Успехов!

Консультировал: Лучников Юрий Владимирович
Дата отправки: 01.02.2006, 16:45
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное