Форум программистов, компьютерный форум CyberForum.ru

Строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибки в функции что не так? http://www.cyberforum.ru/cpp-beginners/thread28501.html
#include <iostream> using namespace std; int fadd(int,int); int fmul(int,int); int fsub(int,int); int fdiv(int,int); int main() { int z,x; char 'a';
C++ [Linker error] undefined reference to `sterling(int, int, int)' #include <iostream> using namespace std; int sterling(int,int,int); int sterling(int,int); int sterling(int); int main() { int funt,sterlings,pens; int funts,sters; int funn; http://www.cyberforum.ru/cpp-beginners/thread28495.html
Портация кода Pascal C++
Нужно сжать массив в котором есть нулевые элементы выкинув их. вот пример на паскале program noules; uses wincrt; type mas=array of integer; procedure Vvod(var x:byte;var ms:mas); var i:byte; begin write('Vvedite razmer massiva: '); readln(x); for i:=1 to x do
найти нужный ID, не перебирая каждый элемент в потоке C++
Добрый день! у меня есть числовой f.dat, с которым работаем консольное приложение 9045 0 180 45 0.0251608 -0.0228552 -0 0 -0.0228552 0.0251608 0 0 0 0 -0.0105215 0 0 0 0 -0.0105215 555 300 135 0.949986 0.00837315 0.0139804 -0.0103626 0.00837315 -0.592651 0.596302 -0.441994 -0.0139804 -0.596302 -0.719417 -0.170758 -0.0103626 -0.441994 0.170758 0.823219 555 300 45 0.023711 0.0137558...
C++ Работа с рядками http://www.cyberforum.ru/cpp-beginners/thread28448.html
Помогите пожалуйста сделать такое задание : Нада програма которая: - копирует рядок S в S1 N раз - отделяет первое слово с рядка S - сравнивает S и S1 c игнорированием отменностей в регистрах. - определяет тип рядка (Буквы, Десятковые числа, Двоичные, Шестнадцатеричные) - выводит количество слов с рядка S - Значения S, S1 и N вводит пользователь Стандартными функциями пользоваться...
C++ Нет инициализации графического режима в BorlandC++ под ДОС Привет всем,проблема такая после относительно долгих вычислений стараюсь инициализировать графический режим,но он выдает ошибку - Not enough memory to load driver (не хватает памяти для загрузки драйвера),хотя если закоментить эти вычисления все проходит нормально и gdriver возращает 9(вместо - 5). В чем проблема подскажите плиз smile smile smile Уже задолбался,ток эта проблема,ниже приведен... подробнее

Показать сообщение отдельно
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
02.04.2009, 17:40  [ТС]     Строки
Не знаю, до классов не ещё не дошел. Вообще это книга("Visual CPP 6 - Руководство Разработчика") очень странная и ошибок много, но до этого мои знания помогали мне их решить, а с этой проблемой даже не знаю, что делать))

Добавлено через 4 минуты 7 секунд
Вот так в книге объединяться действие с потоком:
В этой программе следует обратить внимание на использование класса ostrstream в пунктах 24
и 25, а также неявно в пунктах 26 и 27. Этот класс управляет выводом строк. Необходимость в
нем возникла в связи с тем, что флаги форматирования оказывают влияние на работу
оператора <<, но не функции write() класса ostream(класс ostrstream является его потомком и
наследует данную функцию), которая записывает в поток указанное число символов строки.
Выводимые ею данные всегда прижимаются к левому краю. Поэтому мы поступаем
следующим образом:
ostrstream(strbuffer, 20).write(psz,19)<< ends;
cout.width(19); cout << strbuffer;
Разберем этот фрагмент шаг за шагом. Сначала вызывается конструктор класса ostrstream,
создающий временный безымянный объект данного класса, автоматически уничтожаемый по
завершении строки. Если вы еще не знакомы с понятием конструктора, то поясним, что это
особая функция, предназначенная для динамического создания объектов своего класса.
Конструктор класса ostrstreamтребует указания двух аргументов: буферной строки, в которую
будет осуществляться вывод, и размера буфера. Особенность заключается в том, что
реальный размер буферного массива может быть больше указанного, но все данные,
записываемые сверх лимита, будут отсекаться.
Итак, конструктор создал требуемый объект, связанный с буфером strbuffer(я просто назвал str). Этот объект
является обычным потоком в том смысле, что им можно управлять как и любым другим
потоком вывода, только данные будут направляться не на экран, а в буфер. Вторым действием
вызывается функция write() объекта, записывающая в поток первые 19 символов строки psz.
Оператор точка (.) в данном случае обозначает операцию доступа к члену класса. Здесь тоже
есть своя особенность: функция write() возвращает адрес потока, из которого она была
вызвана. А это, в свою очередь, означает, что мы можем тут же применить к потоку оператор вывода <<. Итого, три действия в одном выражении! Манипулятор endsкласса
ostreamвставляет в поток символ \0,служащий признаком завершения строки. Именно поэтому
в буфере было зарезервировано 20 ячеек — на единицу больше, чем количество выводимых
символов строки psz. В результате выполненных действий в буфере оказалась
сформированной готовая строка, которая, в конце концов, и направляется в поток cout.
Теперь рассмотрим, что происходит в пункте 25:
ostrstream (strbuf fer, 3) .write (psz, 2) << ends;
cout << strbuffer;
Последовательность действий та же, но резервируется не весь буфер, а только первые три
ячейки. Трюк в том, что объект cout воспринимает массив strbuffer как обычную строку, но
поскольку в третьей ячейке стоит символ \0,то получается, что строка состоит из двух
символов! В пунктах 26 и 27 используется содержимое буфера, полученное в пункте 25.
Важно также помнить, что функция width( ) оказывает влияние только на следующий за ней
оператор вывода, тогда как, например, действие функции precision() останется в силе до тех
пор, пока она не будет выполнена снова либо не будет вызван манипулятор setprecision( ) .
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru