Zapisanie \0 do zmiennej z innej zmiennej, jako część składowa napisu, nie jako \0.

0

Dobry, mam takie coś.

string zarzadzenie_plikami::zapis_lub_odczyz_z_pliku(unsigned long int rozmiar, string zapis)
{ 
 if (czyotworzono) /*Wartość logiczna true/false*/
 {
	char* memblock = new char[rozmiar];
	if (tryb_otwarcia) /*Wartość logiczna true/false*/
	{
	/*odczyt danych, nie ma zwiazku z dalsza czescia kodu*/
	}
	else
	{
	 	 for (unsigned long int i = 0; i < zapis.length(); i++) memblock[i] = zapis[i];
	         (this->zapis).write(memblock, rozmiar); /*Odwoluje się do zmiennej klasowej, która to zapis jest zmienną typu  ofstream*/
	}
   delete memblock;
 }
 return zapis;
}

Ogólnie tym kawałkiem kodu próbuje, przepisać z zmiennej string (którą mam podaną w parametrach) do memblocka. Robię po to, ponieważ funkcja file.write wymaga parametru char *, a próba konwersji (this->zapis).write(zapis.c_str(), rozmiar);, nic nie daje.
Nawiązując do tematu, mam problem z danymi

String jako: "\x1\0\0\0\0\0\0\x1\0"

Jeśli zapiszę \x1 do memblocka[0] - to jeszcze działa.
Ale gdy wykonam operację memblock[1] = zapis[i] = \0. To próba przypisania czegokolwiek do tej zmiennej spełza na niczym. Poszukałem trochę w internecie, że "\0" i '\0', to są dwa osobne łańcuchy, ponieważ pierwszy będzie to pusty łańcuch, drugi będzie znakiem \0, czyli 0. Ale jak zrobić to na zmiennych, to nie mam pojęcia.

0

\0 (null w ascii) oznacza koniec łańcucha znaków, więc nic dziwnego że ci nie działa jak chcesz. To co za '\0' zostało uznanie za  coś co zajmuje pamięć za twoim łańcuchem znaków a nie jego część.

0

A teraz pytanie kluczowe, jak to ominąć? : )

0

Użyj \ przed. Czyli \\0. Nie jestem na 100% pewny czy mam rację.

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