Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在MFC+中跟踪或跟踪数组元素+;visual studio_C++_Arrays_Visual Studio 2012_Mfc_Trace - Fatal编程技术网

C++ 如何在MFC+中跟踪或跟踪数组元素+;visual studio

C++ 如何在MFC+中跟踪或跟踪数组元素+;visual studio,c++,arrays,visual-studio-2012,mfc,trace,C++,Arrays,Visual Studio 2012,Mfc,Trace,我对visualstudios/window应用相当陌生,所以我不习惯没有命令行 例如,我基本上有一个CString m_storeEx=“12+2-4”,因此我使用tokenize方法将每个数字和运算符放入一个数组,方法如下: CStringArray arr; CString resToken= m_StoreEx.Tokenize(_T(" "),curPos); while (resToken != _T("")) { arr.Add(resToken); re

我对visualstudios/window应用相当陌生,所以我不习惯没有命令行

例如,我基本上有一个
CString m_storeEx=“12+2-4”
,因此我使用tokenize方法将每个数字和运算符放入一个数组,方法如下:

CStringArray arr;
CString resToken= m_StoreEx.Tokenize(_T(" "),curPos);    

while (resToken != _T(""))
{
    arr.Add(resToken);
    resToken = m_StoreEx.Tokenize(_T(" "), curPos);
}
我希望最终结果是这样的数组
arr=['12'、'+'、'2'、'-'、'4']


我只是想检查一下我添加的元素是否正确。通常,如果我使用有命令行的代码,我只需要做一个for循环,然后打印出数组进行检查。但我知道要在MFC visual Basic中这样做,因为没有命令行。我尝试使用调试工具检查数组的值,但它只给了我奇怪的数字和字母。

不幸的是,Visual Studio调试器无法显示CStringArray的内容,但您可以调用一些帮助程序跟踪函数:

...
while (resToken != _T(""))
{
    arr.Add(resToken);
    resToken = m_StoreEx.Tokenize(_T(" "), curPos);
}

afxDump.SetDepth(1);
arr.Dump(afxDump);
这将在Visual Studio输出窗口中显示
arr
数组的内容,如下所示:

a CStringArray at $0032FB60
with 5 elements
    [0] = 12
    [1] = +
    [2] = 2
    [3] = -
    [4] = 4

如果您迫切需要此功能,可以随时在VisualStudio中使用

  • 关闭VisualStudio
  • Notepad
    中的[Visual Studio安装文件夹]\Common7\Packages\Debugger打开文件
    autoexp.dat
  • 将以下代码段复制并粘贴到
    autoexp.dat
    中。具体来说,将其粘贴到文件的第一行

    CStringArray{
        children
        (
            #array
            (
                expr : ($e.m_pData[$i]),
                size : ($e.m_nSize)
            )
        )
    }
    
  • 正如中所指出的,VisualStudio具有扩展和自定义调试器中对象可视化的规定。详情请参阅。默认情况下,Visual Studio不提供
    CStringArray
    visualizer,因此您只需编写自己的可视化工具

    以下是一个简单的可视化工具,它显示集合大小及其内容:

    <?xml version="1.0" encoding="utf-8"?>
    <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
      <Type Name="CStringArray">
        <DisplayString>{{size={m_nSize}}}</DisplayString>
        <Expand>
          <ArrayItems>
            <Size>m_nSize</Size>
            <ValuePointer>m_pData</ValuePointer>
          </ArrayItems>
        </Expand>
      </Type>
    </AutoVisualizer>
    
    在调试器中生成此可视化:

    奇数。您链接到了正确的URL,描述了如何实现Natvis可视化,只是为了继续并提供一个示例,该示例使用了未记录、不受支持和被取代的autoexp.dat文件。原因?@khoi::“作为问题的作者,您还有一个选择:您认为这是解决您问题的最佳方案。[…]请不要对您的问题或答案添加评论以表示“谢谢”
    CStringArray str;
    str.Add( _T( "12" ) );
    str.Add( _T( "+" ) );
    str.Add( _T( "2" ) );
    str.Add( _T( "-" ) );
    str.Add( _T( "4" ) );