Witam, jak zrobić aby dodawać dane do pliku , który od początku ma jakąś zawartość? W tej chwili przy zapisie, plik najpierw jest czyszczony (usuwane są dane z pliku) i dopiero po tym dodawane są nowe elementy. Chodzi mi o to abym z poziomu programu mógł dodawać dane do już istniejących. Podpowie ktoś jak to uczynić?
Flaga std::ios::app
podczas otwierania pliku.
Ok, już wiem. Wystarczy zrobić coś takiego:
NowyPlik.open("C:\\Users\\user\\Desktop\\plik.txt", ios::app);
spartanPAGE napisał(a):
Flaga
std::ios_base::app
podczas otwierania pliku.
A tak btw czym jest flaga w programowaniu? Jak można ją zdefiniować?
Flaga to pewna ustalona wartość (najczęściej bitowa), która informuje o czymś. Np. jak strumień widzi flagę ios_base::app
to wie, że należy dopisać, jak widzi flagę ios_base::binary
to wie, że należy traktować plik jako binarny.
Często flaga to jeden określony bit, dzięki czemu jedna zmienna może przechowywać informację o wielu flagach
const int PROTOSS = 1; // bit na pierwszej pozycji, można też = 1 << 0
const int ZERG = 2; // bit na drugiej, 1 << 1
const int TERRAN = 4; // bit na trzeciej, 1 << 2
int state = getState();
if (state & PROTOSS) // pierwszy bit ustawiony
killProtoss();
if (state & ZERG) // drugi bit ustawiony
killZerg();
W swoim kodzie możesz używać flagi np. do wyjścia z pętli
bool nalezy_wyjsc = false;
while (!nalezy_wyjsc)
{
if (jakis_warunek) nalezy_wyjsc = true;
...
}
Mam jeszcze jedno pytanie. Otóż mam vector <string> z nazwami kilku plików. W trakcie działania programu dodaje nowy plik o nowej nazwie. Jak zrobić, aby po ponownym uruchomieniu programu do vectora <string> dodany był ten plik?
Zielony635 napisał(a):
Otóż mam vector <string> z nazwami kilku plików.
A skąd pochodzą te nazwy? Jak z pliku/bazy (generalnie pamięci, która istnieje poza programem) to dopisz nową nazwę do tego samego miejsca.
Kilka nazw mam od razu przepisanych do vectora z tablicy, a kolejne chciałem do niego dodawać.
To najlepszym sposobem jest odczyt nazw z pliku tak?
A jest jakaś funkcja pozwalająca na zapis każdej nazwy w nowej linii, tak żeby uniknąć wczytywania pustej linii?
Ok wystarczyło \r\n.