J'ai dû contourner ce problème en utilisant quelque chose de similaire à la réponse de Brad (en plus d'utiliser DebugBreak() pour casser le code), il arrive que l'édition, la recompilation et l'exécution d'un bout de code prennent trop de temps ou soient tout simplement impossibles.
Heureusement, il est apparemment possible d'accéder aux membres de la classe std::string. Un moyen est mentionné aquí -- et bien qu'il parle spécifiquement de VS2010, vous pouvez toujours accéder à des caractères individuels manuellement dans les versions antérieures. Ainsi, si vous utilisez 2010, vous pouvez simplement utiliser la jolie fonction strcmp()
et autres ( plus d'info) mais si vous êtes comme moi et que vous avez encore 2008 ou une version antérieure, vous pouvez trouver une alternative délabrée, terrible, mais fonctionnelle en mettant un point d'arrêt conditionnel quelque chose comme :
strVar._Bx._Ptr[0] == 'a' && strVar._Bx._Ptr[1] == 'b' &&
strVar._Bx._Ptr[2] == 'c'
pour s'arrêter si les trois premiers caractères de strVar sont "abc". Vous pouvez continuer avec des caractères supplémentaires, bien sûr. C'est moche mais ça m'a fait gagner un peu de temps.
1 votes
Je ne sais pas si c'est le but recherché, mais votre code est cassé. Func1 renvoie void, alors que vous renvoyez une std::string. Func2 n'est pas montré, mais il ne renvoie probablement pas une std::string, de plus vous utilisez l'opérateur == (égal) plutôt que = (affectation).
0 votes
Mauvais exemple de ma part, corrigé mais le but était d'illustrer le problème de faire fonctionner un point d'arrêt conditionnel avec std::string
0 votes
Voir aussi GDB : stackoverflow.com/questions/10801112/
0 votes
Consultez les réponses en bas de page pour d'autres versions de Visual Studio. Bravo à @Rai pour VS 2017+. Une mise en œuvre simple à retenir.