Dzień dobry.
Zapisuję duży plik (trochę ponad 1 GB). Zapisują mi się wszystkie linie, poza dwoma ostatnimi, które są jakby ignorowane. Myślałem, że mam błąd w programie i to moje instrukcje powodują, że nie generują mi się wszystkie dane i stąd problem. Jednak sprawdziłem, dane są w zmiennej przy zapisie. To ofstream
ma jakby limit danych do zapisu. Inaczej tego nie potrafię wyjaśnić. Nasiedziałem się nad debugiem ponad 3h.
Czy jest jakiś limit w g++ i jeżeli tak, to jak go mogę zwiększyć (np. do 2 GB)? A może to limit systemu? (Windows 10 Pro)
Proszę o pomoc.
Dziękuję
Michał
PS. Jakby kogoś interesowało, to za zapis odpowiadają te instrukcje:
if (nextLineNewFile.length() > 1000000)
{
nextLineNewFile[nextLineNewFile.length() - 1] = ';';
fout << "INSERT INTO `forum_posts` VALUES " << nextLineNewFile << endl;
nextLineNewFile = "";
}
// i później
if (nextLineNewFile.length() > 0)
{
nextLineNewFile[nextLineNewFile.length() - 1] = ';';
fout << "INSERT INTO `forum_posts` VALUES " << nextLineNewFile << endl;
nextLineNewFile = "";
}
OK, już znalazłem.
Miałem w innym miejscu fout.close();
, w miejscu, w którym go nie powinno być, przy końcu odczytu i natrafieniu na koniec jednego z przetwarzanych plików. Już działa. Dzięki :D