Én is hajlamos vagyok elfelejteni ezt, pedig egyszer már rájöttem, sőt meg is írtam az engineben a helyes módszert. A probléma az, hogy Windows-on más a sorvégejel (CR/LF) mint Unix alapú rendszereken (LF). Azaz ha az egyik platformon csinálsz egy fájlt, az a másik platformon tuti rosszul fog működni, az emlegetett függvény ugyanis mindig az adott platformnak megfelelően értelmezi (vagy nem...).
Nekem a hiba úgy jött elő, hogy zlib-el betömörítettem egy txt fájlt, majd kitömörítés után std::stringstream-ből használva az std::getline marhaságokat adott vissza (bennehagyta a CR-t). Átírva az engines getline-ra, a probléma megszűnt.
std::istream& qEngineHelper::GetLine(
std::istream& in, qstring& out)
{
char c = 0;
out = "";
while( in.get(c).good() )
{
// win
if( c == '\r' )
{
c = in.peek();
if( in.good() )
{
if( c == '\n' )
in.ignore();
}
break;
}
// unix
else if( c == '\n' )
break;
out.append(1, c);
}
return in;
}
Szóval erre érdemes odafigyelni...