Wie std::stringstream-Operator >> zu zwingen, eine ganze Zeichenfolge zu lesen, anstatt am ersten Leerzeichen zu stoppen?
Ich habe eine Vorlagenklasse, die einen aus einer Textdatei gelesenen Wert speichert:
template <typename T>
class ValueContainer
{
protected:
T m_value;
public:
/* ... */
virtual void fromString(std::string & str)
{
std::stringstream ss;
ss << str;
ss >> m_value;
}
/* ... */
};
Ich habe versucht, Stream-Flags zu setzen oder zu deaktivieren, aber es hat nicht geholfen.
Klärung
Die Klasse ist eine Container-Vorlage mit automatischer Konvertierung in/aus Typ T. Strings sind nur eine Instanz der Vorlage, sie muss auch andere Typen unterstützen. Deshalb möchte ich den Operator >> dazu zwingen, das Verhalten von std::getline zu imitieren.