L'utilisation de C++ Chaîne de Flux pour ajouter des int?
quelqu'un pourrait-il me dire ou m'indiquer un exemple simple de comment faire pour ajouter un int à un stringstream contenant le mot "Chose" (ou n'importe quel mot)?
Avec un flux normal, à ajouter à la fin, vous auriez du ouvrir avec std::ios::ate ou std::ios::app comme deuxième paramètre, mais avec de la ficelle de ruisseaux, qui ne semble pas fonctionner de façon fiable (au moins avec de vrais compilateurs -- ni gcc, ni VC++ génère la sortie je m'attends quand/si je le fais).
c_str() est mauvais, doit être std::cout << stream.str(); non, stringstream n'a pas de c_str() la méthode Merci Neil -- stupide slipup de ma part. -1 La sortie produite est 12345hing, comme l'initialisation d'un std::stringstream objet, sans réglage de la position de démarrage de la rédaction sera la cause de toute entrée d'être écrit au début de la mémoire tampon du flux. Bon point -- corrigé. Merci.
Si vous êtes déjà à l'aide de boost, il a lexical_cast qui peuvent être utilisés à cet effet. Il s'agit d'une version de paquet de la ci-dessus, qui fonctionne sur n'importe quel type qui peuvent être écrites et lues à partir d'un flux.
string s("something");
s += boost::lexical_cast<string>(12);
C'est probablement pas la peine de l'utiliser si vous n'utilisez pas de boost déjà, mais si vous êtes il peut rendre votre code plus clair, surtout de faire quelque chose comme
Référence pour l'avenir, vérifier cela.
http://www.cplusplus.com/reference/iostream/stringstream/
OriginalL'auteur Daniel A. White
Je serais probablement faire quelque chose dans cet ordre:
Avec un flux normal, à ajouter à la fin, vous auriez du ouvrir avec
std::ios::ate
oustd::ios::app
comme deuxième paramètre, mais avec de la ficelle de ruisseaux, qui ne semble pas fonctionner de façon fiable (au moins avec de vrais compilateurs -- ni gcc, ni VC++ génère la sortie je m'attends quand/si je le fais).c_str()
est mauvais, doit êtrestd::cout << stream.str();
non, stringstream n'a pas de c_str() la méthode
Merci Neil -- stupide slipup de ma part.
-1 La sortie produite est
12345hing
, comme l'initialisation d'unstd::stringstream
objet, sans réglage de la position de démarrage de la rédaction sera la cause de toute entrée d'être écrit au début de la mémoire tampon du flux.Bon point -- corrigé. Merci.
OriginalL'auteur Jerry Coffin
Si vous êtes déjà à l'aide de boost, il a lexical_cast qui peuvent être utilisés à cet effet. Il s'agit d'une version de paquet de la ci-dessus, qui fonctionne sur n'importe quel type qui peuvent être écrites et lues à partir d'un flux.
C'est probablement pas la peine de l'utiliser si vous n'utilisez pas de boost déjà, mais si vous êtes il peut rendre votre code plus clair, surtout de faire quelque chose comme
OriginalL'auteur KeithB