J'ai un programme qui suit un fichier en croissance. J'essaie d'éviter de saisir une ligne partielle du fichier (par exemple lire avant que la ligne soit complètement écrite par l'autre processus). Je sais que cela se passe dans mon code, donc j'essaie de l'attraper spécifiquement.std :: getline et eol vs eof
Existe-t-il une façon saine de faire cela?
Voici ce que je suis en train:
if (getline (stream, logbuffer))
{
if (stream.eof())
{
cout << "Partial line found!" << endl;
return false;
}
return true;
}
return false;
Cependant, je ne peux pas reproduire facilement le problème, donc je ne suis pas sûr que je détecter avec ce code. std :: getline supprime les retours à la ligne, donc je ne peux pas vérifier le buffer pour un retour chariot. Mon message de journal (ci-dessus) ne se déclenche JAMAIS.
Existe-t-il un autre moyen de vérifier ce que je veux détecter? Est-il possible de savoir si la dernière ligne que j'ai lue a frappé EOF sans trouver de caractère EOL?
Merci.
Pourquoi ne pas modifier l'autre processus pour vider uniquement son tampon de sortie dans le fichier sur les nouvelles lignes? –
Je ne possède pas l'autre processus, ni aucun contrôle sur son comportement. Le plaisir de l'intégration. – Joe
En effet. Déposer une plainte auprès de l'autre ministère? –