Débutant ici. J'essaie de concaténer les arguments d'un programme C++ dans un seul tableau char. Pour une raison quelconque, strcat
ne tient pas compte de manière sélective argv[2]
dans la boucle for:C++ strcat ignore un argument?
#include <cstring>
int main(int argc, char *argv[]) {
char *argstr = argv[1];
for(int i=2; i < argc; i++) {
argstr = std::strcat(argstr, " ");
argstr = std::strcat(argstr, argv[i]);
}
std::cout << argstr << std::endl;
return 0;
}
Le fichier est nommé qtimer
. Ainsi, la sortie prévue de fonctionnement:
qtimer asdf 1 2 3
serait:
asdf 1 2 3
mais il est sortie:
asdf 2 3
(avec deux espaces après asdf
)
Quelqu'un pourrait-il expliquer pourquoi c'est? Aussi, y a-t-il une meilleure façon de faire cela?
'std :: strcat' semble juste faux! Vous ne devriez pas utiliser ces fonctions de la corbeille c, quand vous avez 'std :: string'. –