J'exécuter ce test:google tests: impossible de créer une chaîne à partir de char array?
TEST_F(CHAR_TESTS, wtf){
char letter[3] = {'A','B','C'};
char types[2] = {'o','s'};
char tmp[3];
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
for(int k=0;k<2;k++){
tmp[0]=letter[i];
tmp[1]=letter[j];
tmp[2]=types[k];
std::string combination(tmp);
std::cout << combination << std::endl;
}
}
}
}
Pour une raison quelconque, cette page Imprimer:
AAo~
AAs~
ABo~
ABs~
ACo~
ACs~
BAo~
BAs~
BBo~
BBs~
BCo~
BCs~
CAo~
CAs~
CBo~
CBs~
CCo~
CCs~
Je ne pense pas que ce soit un problème avec l'impression elle-même, comme je l'ai fini par le faire après avoir remarqué certains tests comparant les chaînes générées à partir de réseaux de char ne passaient pas, et je ne pouvais pas comprendre pourquoi. Donc, il semble que les chaînes de "combinaison" ne finissent pas par avoir le contenu attendu.
Le même code dans un exécutable "normal" (pas un gtest) imprime ce qui est attendu (les 3 caractères sans les caractères supplémentaires étranges).
Ou 'char tmp [4] =" ";' –
putain, je viens de lire ceci un peu trop vite: https://stackoverflow.com/questions/8960087/how-to-convert-a-char-array -to-a-string: "la classe de chaîne a un constructeur qui prend une chaîne de caractères terminée par NULL", j'ai sauté la "partie terminée par NULL". – Vince
Vous pouvez également utiliser la combinaison 'std :: string (std :: begin (tmp), std :: end (tmp));' – legalize