Come forzare l'operatore std :: stringstream >> a leggere un'intera stringa invece di fermarsi al primo spazio bianco?Come forzare l'operatore std :: stringstream >> a leggere un'intera stringa?
Ho una classe template che memorizza un valore letto da un file di testo:
template <typename T>
class ValueContainer
{
protected:
T m_value;
public:
/* ... */
virtual void fromString(std::string & str)
{
std::stringstream ss;
ss << str;
ss >> m_value;
}
/* ... */
};
Ho provato a installare/disinserimento bandiere flusso, ma non ha aiutato.
Chiarificazione
La classe è un modello di contenitore con conversione automatica da/tipo Corde T. sono solo un'istanza del template, deve anche supportare altri tipi pure. Ecco perché voglio forzare l'operatore >> a imitare il comportamento di std :: getline.
Non sono chiaro su quale sia il problema. Se si desidera '>>' per lavorare con la classe 'T' è necessario sovrascrivere' >> 'come ad esempio ' stringstream & operator >> (T & ricevitore) '. All'interno di questa funzione si ha accesso a 'stringstream' (tramite' this') ea 'receiver' e si può uscire da' * this' qualunque quantità di dati si desideri. Potresti spiegare il problema più chiaramente? – Ari
Siamo spiacenti, è 'stringstream & operator >> (stringstream & ss, T & receiver)', naturalmente, e si accede direttamente a 'ss'. – Ari