LINUX.ORG.RU

Сообщения GooseDB

 

Странное поведение вывода в консоль.

void Input(SDL_Window* window, 
	SDL_Renderer* renderer, 
	MyWindow* myWindow) {

	//std::cout << "input\n";

	SDL_Event event;

	while (SDL_PollEvent(&event)) {
		if (event.type == SDL_QUIT)
			myWindow->_exit = true;
		if (event.type == SDL_KEYDOWN) {
			std::cout << "\nkeydown\n";

			std::ifstream file;
			file.open("/Users/goosedb/Documents/FuckThisIDE/source/FTIDE_settings.txt");


			if (file.is_open()) {
				while (true) {
					if(file.eof())
						break;
					char c;
					file >> c;
					std::cout << c;
				}
			} else {
				std::cout << "no!\n";
			}
		}
	}
}

При двух последовательных нажатиях вывод консоли:

keydown

[*syntax*#FTISE_syntax.txt#]] //Содержимое файла

keydown

После завершения программы выводится:

[*syntax*#FTISE_syntax.txt#]]

Почему у вывода такое странное поведение? Ведь

«keydown» и «[*syntax*#FTISE_syntax.txt#]]»

должны выводиться сразу друг за другом.

 ,

GooseDB
()

Как правильно написать функцию?

Пишу простенький редактор кода. В функцию Init() передаю три указателя на структуры.

int main(int agrc, char* argv[]) {

	//initialisation
	SDL_Init(SDL_INIT_EVERYTHING);
	TTF_Init();

	SDL_Window* window;
	SDL_Renderer* renderer;
	MyWindow* myWindow;

	Init(window, renderer, myWindow);

	std::vector<std::string> settings = LoadSettings();
	std::vector<ButtonWithLabel> menu_bar = LoadMenu();

	while (!myWindow->_exit) {
		Draw(window, renderer, myWindow);
		Input(window, renderer, myWindow);
	}

	return 0;
}

Функция Init():

void Init(SDL_Window* window,
	SDL_Renderer* renderer,
	MyWindow* myWindow) {

	float dpi;

	SDL_GetDisplayDPI(0, &dpi, &dpi, &dpi);

	float coefficient = 128 / dpi;
	
	SDL_DisplayMode dm;

	SDL_GetDisplayMode(0, 0, &dm);

	window = SDL_CreateWindow("F*ckThisIDE",
		SDL_WINDOWPOS_CENTERED,
		SDL_WINDOWPOS_CENTERED,
		dm.w * 0.4, 
		dm.h * 0.4,
		SDL_WINDOW_RESIZABLE);

	renderer = SDL_CreateRenderer(window, 1,
		SDL_RENDERER_PRESENTVSYNC);

	myWindow = CreateMyWindow(CreateEditor(), coefficient);
}

В функции Init() структур имеют значения, но после выхода из неё, они удаляются. Как сделать, чтобы значения структур остались в куче?

 ,

GooseDB
()

RSS подписка на новые темы