01/10/2018, 16:36

Lấy dữ liệu từ data.bin gán vào map trong c++

Mình có 1 file Data.bin
Với nội dung:
#IMAGES 4

  • ID: 0
  • PATH: …/Resources/Images/background.png
  • ID: 1
  • PATH: …/Resources/Images/aestroid_brown.png
  • ID: 2
  • PATH: …/Resources/Images/bullet.png
  • ID: 3
  • PATH: …/Resources/Images/player.png
    #UIBUTTON 3
  • ID: 0
  • NORMAL_PATH: …/Resources/UIButton/PlayButtonNormal.png
  • PRESSED_PATH: …/Resources/UIButton/PlayButtonPressed.png
  • ID: 1
  • NORMAL_PATH: …/Resources/UIButton/ReplayButtonNormal.png
  • PRESSED_PATH: …/Resources/UIButton/ReplayButtonPressed.png
  • ID: 2
  • NORMAL_PATH: …/Resources/UIButton/BackButtonNormal.png
  • PRESSED_PATH: …/Resources/UIButton/BackButtonPressed.png
    #FONT 1
  • ID: 0
  • PATH: …/Resources/Fonts/fontPolygon.fnt

Em cần lấy ra đường dẫn path để lưu vào map map( char,image* ) images; tương ứng. Do mới lần đầu học c++ và gặp dạng stl map nên đang gặp khó đoạn này ! Mong mọi người giúp đỡ

rogp10 viết 18:50 ngày 01/10/2018

Tham khảo cppreference.com nhé

TN viết 18:49 ngày 01/10/2018

cppreference.com

cả stackoverflow, tutotr,cpp,… nữa chứ bác :D.
Trước đó e có thao khảo nhưng chưa search ra được vụ quăng vào map nên mới lên hỏi ạ

rogp10 viết 18:50 ngày 01/10/2018

Cái đó gọi là insert vào map

TN viết 18:46 ngày 01/10/2018

hì cảm ơn a đã nhắc

rogp10 viết 18:46 ngày 01/10/2018

Để đẩy vào set thì cần value thôi, nhưng map thì có thêm key gắn với data nên phải dùng pair.

Với set thì value cũng dúng để so sánh, map chỉ sử dụng key để so sánh, và key là duy nhất (như bên set).
std::map hỗ trợ cú pháp (đúng hơn là op) [] như (và hơn) một mảng bt.

TN viết 18:37 ngày 01/10/2018

END TOPIC

    FILE *pFile = fopen(fileName, "rb");
if (pFile == NULL)
{
	Logger::Info("Load Data.bin", "Error when load");
}
int idImage = 0;
int idUIBtn = 0;
int idFont = 0;
char id = 0;
char pathIMG[200];
char pathFONT[200];
char normalPath[200];
char pressPath[200];
Image* image;
UIButton* uibutton;
Font* font;
while (!feof(pFile))
{

	// With image 
	fscanf(pFile, "#IMAGES %d\n", &idImage);

	for (int i = 0; i < idImage; i++)
	{
		fscanf(pFile, "- ID: %c\n", &id);
		fscanf(pFile, "- PATH: %s\n", pathIMG);
		image = new Image(pathIMG);
		images.insert(pair<char, Image*>(id, image));
		//images[id] = image;

	}

	fscanf(pFile, "#UIBUTTON %d\n", &idUIBtn);

	for (int i = 0; i < idUIBtn; i++)
	{
		fscanf(pFile, "- ID: %c\n", &id);
		fscanf(pFile, "- NORMAL_PATH: %s\n", normalPath);
		fscanf(pFile, "- PRESSED_PATH: %s\n", pressPath);

		uibutton = new UIButton(normalPath, pressPath);
		buttons.insert(pair<char, UIButton*>(id, uibutton));
		//buttons[id] = uibutton;
	}

	//With font
	fscanf(pFile, "#FONT %d\n", &idFont);
	for (int i = 0; i < idFont; i++)
	{

		fscanf(pFile, "- ID: %c\n", &id);
		fscanf(pFile, "- PATH: %s\n", pathFONT);
		font = new Font(pathFONT);
		fonts.insert(pair<char, Font*>(id, font));
		//fonts[id] = font;
	}

}
fclose(pFile);
Bài liên quan
0