C++ 如何在MFC+中跟踪或跟踪数组元素+;visual studio
我对visualstudios/window应用相当陌生,所以我不习惯没有命令行 例如,我基本上有一个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
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中使用
Notepad
中的[Visual Studio安装文件夹]\Common7\Packages\Debugger打开文件autoexp.dat
autoexp.dat
中。具体来说,将其粘贴到文件的第一行
CStringArray{
children
(
#array
(
expr : ($e.m_pData[$i]),
size : ($e.m_nSize)
)
)
}
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" ) );