Comment faire pour déplacer le pointeur de fichier au caractère suivant à travers “ifstream” sans “être” n'importe quel caractère, tout comme “fseek”?
seekg utilise ios comme deuxième argument, et ios peut être réglé pour fin ou beg ou certains autres valeurs, comme indiqué ici: http://www.cplusplus.com/reference/iostream/ios/
Je veux juste le pointeur pour passer au caractère suivant, quelle est celle qui doit être accompli grâce à ifstream?
MODIFIER
Eh bien, le problème est que je veux une fonction dans ifstream similaire à fseek, qui se déplace le pointeur sans lire quoi que ce soit.
comment au sujet de simplement faire une fausse lecture de caractère courant?
en fait, je suis en utilisant
Je ne comprends pas très bien ce qu'il y a de problème avec ça. Pourriez-vous poster un exemple de fichier que vous voulez lire, et ce que vous souhaitez obtenir de lui?
getline() consomme '\n'. Après un getline (), vous êtes immédiatement prêt à en appeler une autre, pas de repositionnement nécessaire.
Mais encore, n'est-il pas une fonction équivalente à fseek dans ifstream?
en fait, je suis en utilisant
getline
fonction pour obtenir la ligne jusqu' '\n' caractère. Maintenant, j'ai envie de lire "à partir de" l'viens de lire '\n' à la prochaine '\n'.Je ne comprends pas très bien ce qu'il y a de problème avec ça. Pourriez-vous poster un exemple de fichier que vous voulez lire, et ce que vous souhaitez obtenir de lui?
getline() consomme '\n'. Après un getline (), vous êtes immédiatement prêt à en appeler une autre, pas de repositionnement nécessaire.
Mais encore, n'est-il pas une fonction équivalente à fseek dans ifstream?
OriginalL'auteur Aquarius_Girl | 2011-06-02
Vous devez vous connecter pour publier un commentaire.
getline
fonction de qui je veux utiliser avec le pointeur de définir le caractère suivant? Je veux dire va les caractères ignorés être lu par legetline
alors?non, il ne le sera pas.
Je craignais que! Je veux qu'il soit lu par le
getline
. Je veux juste le pointeur à être déplacé sans "prise" quoi que ce soit.mais c'est impossible, l'obtention d' est de la lecture à partir de la position courante du pointeur de la! Vous devriez peut-être poster quoi votre problème est et de demander une solution adéquate.
Kaul: Lorsque vous déplacez le pointeur de rechercher ou d'obtenir ou de les ignorer vous déplacez la position du pointeur de la souris à partir de laquelle la lecture suivante aura lieu. Vous êtes affecte en rien la lecture du caractère suivant (ou le déplacement) pour définir la position à partir de laquelle une lecture aura lieu. Expliquer le réel problème. Votre montage est d'expliquer la solution à un problème que nous ne comprenons pas. Si vous expliquez le problème réel, quel problème essayez-vous de résoudre qui vous oblige à aller de l'avant d'un personnage, peut-être que nous pouvons vous proposer une meilleure solution. c'est à dire nous avons besoin de plus de contexte.
OriginalL'auteur ybungalobill
Oui. Son appelé seekg() comme vous semblez le savez déjà?
Remarque c'est la même chose que:
OriginalL'auteur Martin York
Lire la documentation pour
seekg
et l'utilisationios_base::cur
comme indiqué.current position within sequence
. Et comment est-ce que cela va déplacer le pointeur? Je ne pouvais pas obtenir le point.Les docs dit "position actuelle dans la mémoire tampon du flux". Avec un décalage de un et
::cur
, vous vous déplacez d'un seul octet de l'avant.Laissez-moi essayer et voir ce qui se passe.
Est-il autre chose à cela? J'ai utilisé
std::ostream &s
faires.seekp(-2, std::ios_base::cur);
afin de remplacer les deux derniers caractères par immédiatement faires << ">]";
, mais les 2 derniers caractères qui doivent être écrasés (1 virgule + 1 espace) sont toujours là et ils ne sont pas écrasés; le">]"
caractères ne s'affichent pas dans le ruisseau..OriginalL'auteur Mat
Je suppose que peek() et unget() pourrait être utile aussi.
Utiliser peek() pour apercevoir le caractère suivant de sorte que getline fonctionnera comme vous l'avez voulu.
Utilisation unget de mettre le caractère de retour à votre tampon dans le cas où vous avez utilisé la méthode get ().
OriginalL'auteur O.C.