Wątek zablokowany 2022-07-18 14:40 przez kq.

wczytywanie z pliku txt danych

0

witam!
mam plik, który zawiera infromację o współrzędnych, wygląda on tak:

4 5

ale chciałbym zrobić to inaczej, żeby stało się czytelniejsze. np:
jak zrobić, żeby najpierw program znalazl start_x: i przypisał jego wartość do programu?

start_x: 4
start_y: 5
exit_x: 10
exit_y: 7

Poniżej mój kod:

void Map::LoadStartExitPositions( void )
{
	std::ifstream stream;
	stream.open( ( "pliki/mapy/" + m_mapName + "/startposition.txt" ).c_str() );

	if( stream )
	{
		while( !stream.eof() )
		{
			stream >> m_startPosition.x >> m_startPosition.y;
		}
	}

	stream.close();

	stream.open( ( "pliki/mapy/" + m_mapName + "/exitposition.txt" ).c_str() );

	if( stream )
	{
		while( !stream.eof() )
		{
			stream >> m_exitPosition.x >> m_exitPosition.y;
		}
	}

	stream.close();
}

0

W C mogło by to wyglądać mniej więcej tak. Przypisać całość pliku do buforu tektowego. Określić jego rozmiar i koniec ('\0').
Za pomocą zmiennej typu *char zastosować takie przypisanie:

zmienna=strstr(bufor,"start_x");
sscanf(bufor,"start_x : %d",&wartosc_wspolrzednej);
return wartosc_wspolrzednej;

0

Wg pokazanego kodu najpierw znajduje start_x i wpisuje do zmiennej.
Więc nie rozumiem co chcesz zrobić.

Może o to ci chodzi?

void Map::LoadStartExitPositions(const string start,const string exit)
{
	ifstream starts(("pliki/mapy/"+m_mapName+"/"+start).c_str());
    ifstream exits(("pliki/mapy/"+m_mapName+"/"+exit).c_str());
    while((starts>>m_startPosition.x>>m_startPosition.y)&&(exits>>m_exitPosition.x>>m_exitPosition.y))
    {
        cout<<"start_x: "<<m_startPosition.x<<endl;
        cout<<"start_y: "<<m_startPosition.y<<endl;
        cout<<"exit_x: "<<m_exitPosition.x<<endl;
        cout<<"exit_y: "<<m_exitPosition.y<<endl;
        cout<<endl;
    }
}
0

a może spróbuj wykorzystać plik JSON do takich rzeczy ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1