1. ホーム
  2. visual-studio

[解決済み] std::stringで条件付きブレークポイントを作成する方法

2023-03-23 09:29:09

質問

このような関数があるとします。

std::string Func1(std::string myString)
{
   //do some string processing 
   std::string newString = Func2(myString)
   return newString;  
}

のときに条件分岐を設定するにはどうしたらよいでしょうか? newString が特定の値を持つ場合、どのように条件分岐を設定しますか? (ソースを変更せずに)

条件設定 newString == "my value"

はうまくいきませんでした。ブレークポイントはエラー "オーバーロードされた演算子が見つかりません" で無効になってしまいました。

どのように解決するのですか?

いくつかの検索では、これを実行する方法を見つけることができませんでした。 推奨される代替案は、コード内にテストを配置し、標準のブレーク ポイントを追加することです。

if (myStr == "xyz")
{
    // Set breakpoint here
}

あるいは、個々の文字の比較からテストを構築することもできます。 文字列の個々の文字を見ることさえ、少し厄介です。Visual Studio 2005 では、次のようにメンバー変数を掘り下げていく必要がありました。

myStr._Bx._Buf[0] == 'x' && myStr._Bx._Buf[1] == 'y' && myStr._Bx._Buf[2] == 'z'

これらのアプローチのどちらも、あまり満足のいくものではありません。 私たちは、標準ライブラリのユビキタスな機能によりよくアクセスする必要があります。