Frage

Ich las istream :: get und Zweifel immer noch hängt. Sagen wir, mein Begrenzer ist eigentlich die NULL ‚\ 0‘, was in diesem Fall passiert? Von dem, was ich gelesen:

If the delimiting character is found, it is not extracted from the input sequence and remains as the next character to be extracted. Use getline if you want this character to be extracted (and discarded). The ending null character that signals the end of a c-string is automatically appended at the end of the content stored in s.

Der Grund würde ich wegen der Fähigkeit „get“ über „Readline-“ ist es vorziehen, den Zeichenstrom in einen „streambuf“ zu extrahieren.

War es hilfreich?

Lösung

Wenn Sie so etwas wie diese, dann Begrenzer nicht in dem Eingangsstrom stecken:

std::string read_str(std::istream & in)
{
        const int size  = 1024;
        char pBuffer[size];
        in.getline(pBuffer, size, '\0');
        return std::string(pBuffer);
}

nur ein Beispiel, wenn Sie ‚\ 0‘ haben als Trennzeichen und Zeichenketten nicht größer sind als 1024 Byte.

Andere Tipps

ich nicht‘ganz bekommt Ihr Problem.

Auf der MSDN-Website, für die get-Funktion, heißt es:

  

In allen Fällen wird der Begrenzer weder aus dem Strom extrahiert noch von der Funktion zurückgegeben. Die getline Funktion, im Gegensatz, extrahiert aber nicht das Trennzeichen nicht speichern.   In allen Fällen wird der Begrenzer weder aus dem Stream noch zurück durch die Funktion extrahiert. Die getline Funktion, im Gegensatz, Extrakten aber speichert nicht das Trennzeichen.

http://msdn.microsoft.com/ en-us / library / aa277360 (VS.60) aspx

Ich glaube nicht, Sie gehen, um ein Problem zu haben, da die MSDN-Site erzählt, dass der Begrenzer weder aus dem Strom gewonnen wird, noch vy der Funktion zurückgegeben.

oder vielleicht ein Punkt, den ich hier fehlt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top