在调试器上一一显示 CStringArray 中的元素?
Posted
技术标签:
【中文标题】在调试器上一一显示 CStringArray 中的元素?【英文标题】:Display element in CStringArray on Debugger one bye one? 【发布时间】:2015-04-15 04:27:28 【问题描述】:此代码每次在调试器中显示 Cat。第一次和第二次。但我想在调试器中第一次显示 Cat ,然后在第二次调试器中显示 Dog 。
int main()
CStringArray arr;
arr.Add("Cat");
arr.Add("Dog");
for (int i = 0; i < arr.GetSize(); i++)
cout<<"arr[i]"<<endl;
return 0;*
忘记cout
我只是使用调试器。
【问题讨论】:
第一次 m_pData=0x004166f0 L"Cat" m_nSize=2 m_nMaxSize=5 ... mfc120ud.dll!CStringArray 第二次 m_pData=0x004166f0 L"Cat" m_nSize=2 m_nMaxSize=5 ... mfc120ud.dll!CStringArray 我想要第二只狗。那个问题? 【参考方案1】:使用
for (int i = 0; i < arr.Count(); i++)
cout<<arr.GatAt(i)<<endl;
cout<<"arr[i]"<<endl;
//这将打印普通字符串,即arr[i]
【讨论】:
No You Don't understand not in console in Autos/Debugger. 第一次 m_pData=0x004166f0 L"Cat" m_nSize=2 m_nMaxSize=5 ... mfc120ud.dll!CStringArray 第二次 m_pData=0x004166f0 L"Cat" m_nSize=2 m_nMaxSize=5 ... mfc120ud.dll!CStringArray 我想要第二只狗。那个问题?【参考方案2】:这是一个简单的代码,它打印 Cat 和 Dog。它不会打印 Cat, Cat,除非您在其他地方有错误。您在寻找TRACE
还是OutputDebugString
?
CStringArray arr;
arr.Add("Cat");
arr.Add("Dog");
for (int i = 0; i < arr.GetSize(); i++)
const char *temp = arr[i];
TRACE("%s\n", arr[i]);//add break point here to look at temp
//or
//OutputDebugString(arr[i]);
//OutputDebugString("\n");
ps,我认为您想使用断点并即时查看arr[i]
。您可以使用const char *temp = arr[i]
它将使第n 个元素可见。否则我不知道。
pss,调试功能 Autos 可能不会显示 temp
的值,具体取决于您放置断点的位置,因为它会自动做出决定。但是你应该可以通过将鼠标移到temp
来查看它。
【讨论】:
No You Don't understand not in console in Autos/Debugger. 第一次 m_pData=0x004166f0 L"Cat" m_nSize=2 m_nMaxSize=5 ... mfc120ud.dll!CStringArray 第二次 m_pData=0x004166f0 L"Cat" m_nSize=2 m_nMaxSize=5 ... mfc120ud.dll!CStringArray 我想要第二只狗。那个问题? 数组的数据缓冲区从 L"Cat" 开始,在那个地址。如果再添加 1000 个元素并查看 800 次,它仍然以 Cat 开头。任何数组的行为都是一样的。如果要调试,请使用调试函数并访问第二个元素。【参考方案3】:您无法在 Autos 或 Locals 视图中执行此操作,但您可以在 Watch 视图中执行此操作。添加到观看视图arr.m_pData,3
。值 2 在这里就足够了,但是让我们看看如果你放一个更大的数字会发生什么。当您在 Watch 视图中展开名称时,您将能够看到三个项目。前两个是Cat
和Dog
,第三个很可能是'
还有一种方法可以告诉 Visual Studio 如何正确显示 CStringArray
变量,但您必须进行一些更改,如 another answer 中所述。
【讨论】:
以上是关于在调试器上一一显示 CStringArray 中的元素?的主要内容,如果未能解决你的问题,请参考以下文章
在 CStringArray 的 5 个元素中选择 3 个元素?