首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

嘿嘿,小疑点,大疑惑,有人帮助解决下不。巨谢

2012-02-08 
嘿嘿,小问题,大疑惑,有人帮助解决下不。。巨谢#includeiostream#includestring#define NULL 0using name

嘿嘿,小问题,大疑惑,有人帮助解决下不。。巨谢
#include<iostream>
#include<string>
#define NULL 0
using namespace std;
void main()
{
string a="2234345262666";
string b;
char *p=new char;
char *i=new char;
a.copy(p,3,0);
a.copy(i,4,2);
cout<<strlen(p)<<endl;
strcat(p,i);
for(int s=0;s<strlen(p);s++)
{
cout<<*(p+s);
}
cout<<endl;
}
结果:5
  223 3434加2个奇怪的符号
我想知道为什么程序一运行就出错退出,而对于*P的大小(STRLEN(P))为什么是5而不是3或4??

[解决办法]
呵呵,可是如果程序这样写,还是有问题。
#include <iostream > 
#include <string > 

using namespace std; 
int main() 

string a="2234345262666"; 
string b; 
char *p = new char[10]; 
char *i = new char[10]; 
a.copy(p,3,0); 
cout<<p<<endl;
a.copy(i,4,2); 
cout<<i<<endl;
cout <<strlen(p)<<endl; 
strcat(p,i); 
for(int s=0;s <strlen(p);s++) 

cout <<*(p+s); 

cout<<endl; 


result is:

223
34348=
3
22334348=

使用的编译环境是是DEV-C++.
[解决办法]
没给p和i字符串设置结束符号'\0'

热点排行