Bonjour,
J'ai un tableau de string :
vector<string> str_list;
str_list.push_back( "mot1" );
str_list.push_back( "mot2" );
str_list.push_back( "mot3" );
Je souhaite concaténer chaque mot en une seule string. J'ai utilisé
std::copy sur un ostringstream via un ostream_iterator et ça marche. Mais
avant j'ai essayé d'utiliser std::accumulate directement sur une string. Je
sais que c'est pas trop fait pour, mais je comprend pas pourquoi ça marche
pas (la string au final est vide) :
string s;
accumulate(
str_list.begin(),
str_list.end(),
s );
cout << s << '\n';
Pourquoi ça échoue ?
Merci pour votre aide.
"Aurélien REGAT-BARREL" wrote in message news:<4146e394$0$15560$...
J'ai un tableau de string : vector<string> str_list; str_list.push_back( "mot1" ); str_list.push_back( "mot2" ); str_list.push_back( "mot3" );
Je souhaite concaténer chaque mot en une seule string. J'ai utilisé std::copy sur un ostringstream via un ostream_iterator et ça marche. Mais avant j'ai essayé d'utiliser std::accumulate directement sur une string. Je sais que c'est pas trop fait pour,
Pourquoi pas ? Ça me semble une utilisation tout à fait normale d'accumulate.
mais je comprend pas pourquoi ça marche pas (la string au final est vide) :
string s; accumulate( str_list.begin(), str_list.end(), s ); cout << s << 'n'; Pourquoi ça échoue ?
L'accumulateur, dans accumulate, c'est dans la fonction. Le troisième paramètre n'est que sa valeur initiale (mais surtout, il sert à définir le type de l'accumulateur). La fonction renvoie le résultat comme valeur de retour. Ce que tu veux, c'est donc :
-- James Kanze GABI Software http://www.gabi-soft.fr Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
"Aurélien REGAT-BARREL" <nospam-aregatba@yahoo.fr.invalid> wrote in
message news:<4146e394$0$15560$636a15ce@news.free.fr>...
J'ai un tableau de string :
vector<string> str_list;
str_list.push_back( "mot1" );
str_list.push_back( "mot2" );
str_list.push_back( "mot3" );
Je souhaite concaténer chaque mot en une seule string. J'ai utilisé
std::copy sur un ostringstream via un ostream_iterator et ça
marche. Mais avant j'ai essayé d'utiliser std::accumulate directement
sur une string. Je sais que c'est pas trop fait pour,
Pourquoi pas ? Ça me semble une utilisation tout à fait normale
d'accumulate.
mais je comprend
pas pourquoi ça marche pas (la string au final est vide) :
string s;
accumulate(
str_list.begin(),
str_list.end(),
s );
cout << s << 'n';
Pourquoi ça échoue ?
L'accumulateur, dans accumulate, c'est dans la fonction. Le troisième
paramètre n'est que sa valeur initiale (mais surtout, il sert à définir
le type de l'accumulateur). La fonction renvoie le résultat comme valeur
de retour. Ce que tu veux, c'est donc :
"Aurélien REGAT-BARREL" wrote in message news:<4146e394$0$15560$...
J'ai un tableau de string : vector<string> str_list; str_list.push_back( "mot1" ); str_list.push_back( "mot2" ); str_list.push_back( "mot3" );
Je souhaite concaténer chaque mot en une seule string. J'ai utilisé std::copy sur un ostringstream via un ostream_iterator et ça marche. Mais avant j'ai essayé d'utiliser std::accumulate directement sur une string. Je sais que c'est pas trop fait pour,
Pourquoi pas ? Ça me semble une utilisation tout à fait normale d'accumulate.
mais je comprend pas pourquoi ça marche pas (la string au final est vide) :
string s; accumulate( str_list.begin(), str_list.end(), s ); cout << s << 'n'; Pourquoi ça échoue ?
L'accumulateur, dans accumulate, c'est dans la fonction. Le troisième paramètre n'est que sa valeur initiale (mais surtout, il sert à définir le type de l'accumulateur). La fonction renvoie le résultat comme valeur de retour. Ce que tu veux, c'est donc :