Domanda

IStream :: ottenere e dubbio pende ancora. Diciamo che la mia delimitatore è in realtà il NULL '\ 0' carattere, quello che succede in questo caso? Da quello che ho letto:

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.

Il motivo per cui preferirei "get" over "readline" è a causa della capacità di estrarre il flusso di caratteri in un "streambuf".

È stato utile?

Soluzione

Se si dispone di qualcosa come questo, allora delimitatore non rimanere bloccati nel flusso di input:

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

solo un esempio, se si dispone di '\ 0' come delimitatore e le stringhe non sono più grandi di 1024 byte.

Altri suggerimenti

I dont' abbastanza ottenere il vostro problema.

Sul sito MSDN per la funzione get, si dice:

  

In tutti i casi, il delimitatore è né estratto dal flusso né restituito dalla funzione. La funzione getline, al contrario, estratti ma non memorizza il delimitatore.   In tutti i casi, il delimitatore è né estratto dal flusso né restituita dalla funzione. La funzione getline, in contrasto, estratti ma non memorizza il delimitatore.

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

Non credo che la vostra intenzione di avere un problema, in quanto il sito MSDN dice che il delimitatore non è né estratto dal torrente, o vi ritorni vy la funzione.

O forse mi manca un punto qui?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top