c++ 中用string定义的字符串数组 调试时在局部变量窗口内为什么只能看到第一个数组元素?
比如:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;int _tmain(int argc, _TCHAR* argv[]){
string arrstr[7]={"sunday","monday","tuesday","wednesday","thursday","friday","satruday"}; 
int arrinit[3]={1,2,3};
return 0;
}
程序没有错,断点调试时,在局部变量窗口内能看到arrstr的第一个元素sumday?但如果用arrstr[2]还是能得到tuesday的。而arrinit在局部变量窗口内的三个元素都可以看的到?为什么?

解决方案 »

  1.   

    IDE监视字符串遇到\0就中止了
      

  2.   

    你查看string会发现
    typedef std::basic_string<char, char_traits<char>, allocator<char> > string; 
    // for vc6 std::string
    而你查看basic_string会发现
    typedef basic_string<_Elem, _Traits, _Ax> _Myt;但是如果你做一个CString 数组
    CString arrstr[2]={CString(_T("sunday")),CString(_T("monday"))};
    你会发现会像普通的数组一样调试的时候能看到它的值
    我就研究了这么多,模板我不太懂  自己体会吧