ページへ戻る

− Links

 印刷 

技術系備忘録​/C++​/VisualStudio​/デバッガでstd.stringをUTF-8で表示 :: シンクリッジ

xpwiki:技術系備忘録/C++/VisualStudio/デバッガでstd.stringをUTF-8で表示

デバッガで文字列(std::string)を見てみると、文字コードが合ってなくて日本語が文字化けして表示されることがあると思います。

昨今のアプリ開発では、内部的に Shift_JIS を使うケースは減ってきてるので、いっそのこと std::string は UTF-8 として表示してくれるほうが嬉しい気がします。

というわけで、デバッガで std::string を UTF-8 として表示させる方法です。

開発環境を作る際、毎度行うことなので、備忘録かねて。

VisualStudio2015 の場合 anchor.png[1]

%VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers\stl.natvis
を編集します。

  <!-- VC 2015 -->
  <Type Name="std::basic_string&lt;char,*&gt;">
      <DisplayString Condition="_Mypair._Myval2._Myres &lt; _Mypair._Myval2._BUF_SIZE">{_Mypair._Myval2._Bx._Buf,na}</DisplayString>
      <DisplayString Condition="_Mypair._Myval2._Myres &gt;= _Mypair._Myval2._BUF_SIZE">{_Mypair._Myval2._Bx._Ptr,na}</DisplayString>
      <StringView Condition="_Mypair._Myval2._Myres &lt; _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Buf,na</StringView>
      <StringView Condition="_Mypair._Myval2._Myres &gt;= _Mypair._Myval2._BUF_SIZE">_Mypair._Myval2._Bx._Ptr,na</StringView>
    • 上記の ",na" となってる 4 個所を ",s8" に変更して保存です。
Page Top

インストールされたファイルを直接編集することに抵抗があるような場合は、ユーザーフォルダを使う方法のほうが良いかもです。 anchor.png[2]

%USERPROFILE%\My Documents\Visual Studio 2015\Visualizers\
に stl.natvis をコピーして、そのファイルを同様に編集します。

      • ユーザーフォルダのほうの設定で上書きされるっていう仕組みです。
      • コピー先ファイル名は同じじゃなくてもOK。
      • たぶん書き換えた箇所のみの記述でOK。

最近のソフトウェアは UTF-8 を使う機会が増えてきているので、デフォルトで UTF-8 表示になっててくれるといいなーと思ってます。


Last-modified: 2017-10-17 (火) 10:14:50 (JST) (2376d) by takatsuka