调试器上CStringArray中的显示元素一个接一个?

时间:2015-04-15 04:27:29

标签: c++ debugging winapi visual-studio-2013 mfc

此代码每次都在调试器中显示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我刚使用了调试器。

3 个答案:

答案 0 :(得分:0)

这是一个简单的代码,它打印猫和狗。它不会打印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即可查看它。

答案 1 :(得分:0)

使用

for (int i = 0; i < arr.Count(); i++)
    {
        cout<<arr.GatAt(i)<<endl;
    }

cout<<"arr[i]"<<endl; //这将打印正常字符串,即arr[i]

答案 2 :(得分:0)

您无法在 Autos 或 Locals 视图中执行此操作,但可以在 Watch 视图中执行此操作。添加到观看视图 arr.m_pData,3。值 2 在这里就足够了,但是让我们看看如果输入更大的数字会发生什么。当您在 Watch 视图中展开名称时,您将能够看到三个项目。前两个将是 CatDog,第三个很可能是“”。

还有一种方法可以告诉 Visual Studio 如何正确显示 CStringArray 变量,但您必须进行一些更改,如 another answer 中所述。