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

Вопрос по реализации буфера - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Мысщъ
 Аватар для Мысщъ
0 / 0 / 0
Регистрация: 25.02.2007
Сообщений: 37
18.08.2008, 13:45     Вопрос по реализации буфера #1
Здравствуйте! Я все продолжаю свои мытарства в текстовым редактором и добрался вот до самого вкусного - как реализовать буфер и работу с ним. Но до работы еще далеко, пока пытаюсь заставить его работать.
Сейчас я пробую сделать его в виде массива типа vector. Сначала была идея сделать что-то типа vector<vector <char>>, но я не смог разобраться, каким образом изменять размер внутреннего вектора, и получился облом.
Вследствии этого возникает вопрос - либо как это сделать, либо может есть стандартный двумерный массив, в котором можно изменять размеры всех массивов?
Ну или просто посоветуйте, куда копать, а то я как-то растерялся
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2008, 13:45     Вопрос по реализации буфера
Посмотрите здесь:

Очистка буфера! C++
C++ Обнуление буфера.
C++ вопрос по реализации на C++
вопрос по реализации ассоциативного контейнера C++
C++ переполнение буфера
C++ Чтение из буфера
C++ Переполнение буфера
C++ Переполнение буфера
C++ Переполнение буфера
Переполнение буфера C++
Переполнение буфера C++
C++ Сброс буфера вывода

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SVEN
 Аватар для SVEN
10 / 10 / 1
Регистрация: 25.03.2008
Сообщений: 50
20.08.2008, 16:16     Вопрос по реализации буфера #2
Изложи подробно суть проблемы, в особенности поясни зачем понадобился именно двумерный буфер.

Не до конца понял суть проблемы, но если нужен двумерный массив с переменными размерами могу посоветовать следующую структуру:
Код
struct buff
{
size_t size; //размер внутреннего буфера
void* body; //тело внутреннего буфера
Type type; //enum по которому идентифицируешь тип данных в body
};
а дальше
Код
std::vector<buff> buffer;
Spo1ler
 Аватар для Spo1ler
291 / 51 / 3
Регистрация: 22.05.2008
Сообщений: 788
20.08.2008, 18:26     Вопрос по реализации буфера #3
я так понял надо стандартное меню, типа Copy, Past и тд?
Мысщъ
 Аватар для Мысщъ
0 / 0 / 0
Регистрация: 25.02.2007
Сообщений: 37
20.08.2008, 18:40  [ТС]     Вопрос по реализации буфера #4
пишу я консольный текстовый редактор. И понадобился двумерный массив для того, что бы редактировать файл, т.е. загнал данные в массив, в массиве их обработал, потом перезаписал в файл.
Переменные размеры нужны для того, что бы не транжирить память, потому как сделать двумерный массив фиксированной длины - ну совершенно не проблема, как и организовать построчную запись в него данных из файла (в настоящий момент оно так и есть, массив типа char)
по пути кстати возникли еще какие-то неясные проблемы с winuser.h
попробовал сделать тестовый вариант функции, котороя будет отвечать за обработку нажатых пользователем клавиш при редактировании содержимого файла.
код самой функции такой:
Код
void test_func()
	{
		if(WM_KEYDOWN)
		{
			switch (wParam):
				case VK_LEFT:
					{
						cout << "Left arrow";
						break;
					}
				case VK_RIGHT:
					{
						cout << "Left arrow";
						break;
					}
				case VK_UP:
					{
						cout << "Up arrow";
						break;
					}
				case  VK_DOWN:
					{
						cout << "Down arrow";
						break;
					}
		}
	}
при поптыке компиляции выдает 13 ошибок, приводит их не буду что бы не загромождать, но все - только на winuser.h
как-то мне боязно его править, если честно )
Spo1ler
 Аватар для Spo1ler
291 / 51 / 3
Регистрация: 22.05.2008
Сообщений: 788
20.08.2008, 19:21     Вопрос по реализации буфера #5
и все таки приведите ошибки, просто юзайте тег CODE
Мысщъ
 Аватар для Мысщъ
0 / 0 / 0
Регистрация: 25.02.2007
Сообщений: 37
21.08.2008, 16:12  [ТС]     Вопрос по реализации буфера #6
ошибки следующие:
Код
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(42) : error C2146: syntax error : missing ';' before identifier 'HDWP'
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(42) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(42) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(43) : error C2146: syntax error : missing ';' before identifier 'MENUTEMPLATEA'
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(43) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(43) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(50) : error C2146: syntax error : missing ';' before identifier 'LPMENUTEMPLATEA'
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(50) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(50) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(58) : error C2065: 'CALLBACK' : undeclared identifier
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(58) : error C2065: 'WNDPROC' : undeclared identifier
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(58) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(58) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Yandex
Объявления
21.08.2008, 16:12     Вопрос по реализации буфера
Ответ Создать тему
Опции темы

Текущее время: 00:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru