1、 Visual C+ 6.0 调试功能 图解教程 (2)-实例一 使用说明 程序名为 NO3.exe.运行环境为 DOS,执行后显示 : 在 “请输入你的选择后 (1.2.3.4.5.6)“后输入数字选择执行的功能 . 测试结果 : 1. 选择 1.后输入 :123456789 2. 选择 2 后输入分别输入 1,3. 重复 1)操作后选择 2,分别输入 10,10. 3. 4. 重复 1)操作后选择 3.分别输入 1,abcde 再 重复 1)操作后选择 3.分别输入 9,abcde 1. 2. 再重复 1)操作后选择 4,分别输入 1,3 再重复 1)操作后选择 4,分别输入 0,3 再重
2、复 1)操作后选择 4,分别输入 10,3 5) 再重复 1)操作后选择 5,分别输入 1,abcde 再重复 1)操作后选择 5,分别输入 9,abcde 再重复 1)操作后选择 5,分别输入 0,abcde 再重复 1)操作后选择 5,分别输入 10,abcde 6)运行 No3.exe后选择 6 或输入非 “1,2,3,4,5“的数字 调试过程 : 1. 本调试主要针对置换操作功能进行演示 : 1. 将光标移置 String: Replace(String t1,int pos)函数的第一条语句处 Ctrl+F10开始调试 2. 在 DOS窗口中选择 1 后输入 “123456789“.
3、接着选择 5 分别输入 1,abcde. 这时 Debugger停留在 String: Replace(String t1,int pos)的第一条语句处 : 3. 在 Watch窗口的名称栏分别输入 : str, t1.str, q, out, pos, (-pos) +1, pos size,j,i.进行观察 . 4. 按 F10开始单步调试 . 1. 按 F10三次后 Debugger停留在最后一个判断语句处 .同时 Watch窗口中个名称的值分别为 : 2. 接着单步调试 ,for()函数完后 ,Debugger停留在 “ delete t1.str;“语句处 . 这时 Watch窗口
4、中个各名称的值分别为 : 接着两次 F10,这时 t1.str和 out的值已经改变 ,Debugger停留在 String: Replace(String t1,int pos)的结束处 . 3. 再按一次 F10,Debugger停留在 main()函数的 switch(k)里的 case 5 的 if()语句处 : F10到调 用 Display()函数的语句处后 F11跟进 Display()的内部 . 在 Watch窗口的名称中输入 str,I,len进行观察 . 单步调试到 Display()函数结束 ,Debugger停留在 Display()函结束处 . 在 Watch窗口中
5、str,I,len的值分别为 : 同时 DOS 窗口中显示如下 : 5. 按 Shift+F5退出调试 .完成调试操作 . 参考源码 : 2. 1 Code: 2 /3.h 3 #include 4 #include 5 #include 6 /using namespace std; 7 int out; / 定义一个全局变量 8 class String 9 10 public: 11 String() 12 String() 13 String SubString(int pos,int num); /取子串函数 14 void Insert(String t,int pos); /插入
6、子串函数 15 void Delete(int pos,int num); /删除子串函数 16 void Creat(); /生成字符串函数 17 void Display(); /打印子串函数 18 Replace(String t1,int pos); /置换子串函数 19 private: 20 char *str; 21 int size; 22 ; 23 24 /3.cpp 25 #include “3.h“ 26 /生成新字符串函数 27 void String: Creat() 28 29 char s100; 30 cins; 31 size=strlen(s); 32 st
7、r=new charsize + 1; 33 if(str=0) 34 cout size ) 57 58 cout left ) 63 num = left; 64 temp.str=new charnum+1;/重新分配内存空间 65 if(temp.str=0) 66 cout pos-1;j-) 99 100 int i = j + t.size; 101 str i- = str j ; 102 103 104 j = pos; 105 for(int i = 0;i size ) 126 127 cout= 0 /定义指针数组 q 用来转存原先将不被置换的字符串 163 q = new char pos +1 ; /给 q 分配足够的空间为将不被置换的字符串的长度 164 for( int i = 0;i k; 203 switch(k) 204 case 1: 205 coutposnum; 213 t = s.SubString(pos,num); 214 coutpos; 220 cout“请输入要插入的子串 : “; 221 s1.Creat();