找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1748|回复: 5

[求助]这段编程为什么错呢?

[复制链接]
发表于 2009-11-6 01:25:46 | 显示全部楼层 |阅读模式 IP:江苏扬州
[求助]这段编程为什么错呢?我是用的VC++2005
#include <iostream>
#include <cstring>
#include <string>
int main()
{
using namespace std;
char charr1[20];
char charr2[20]="jaguar";
string str1;
string str2="panther";
str1=str2;
?strcpy(charr1,charr2);
str1+="paste";
?strcat(charr1,"juice");
?int len1=str1.size();
?int len2=strlen(charr1);
cout<<"The string "<<str1<<" contains "<<len1<<" character.\n";
cout<<"The string "<<charr1<<" contains "<<len2<<" character.\n";
return 0;
}
警告 1 warning C4996: “strcpy”被声明为否决的 e:\microsoft visual studio 2005 简体中文专业版\vc++2005\项目\4.9\4.9\strtype3.cpp 12
警告 2 warning C4996: “strcat”被声明为否决的 e:\microsoft visual studio 2005 简体中文专业版\vc++2005\项目\4.9\4.9\strtype3.cpp 14

告 3 warning C4267: “初始化”:
从“size_t”转换到“int”,可能丢失数据 e:\microsoft visual studio 2005
简体中文专业版\vc++2005\项目\4.9\4.9\strtype3.cpp 15
警告 4 warning
C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据 e:\microsoft visual studio
2005 简体中文专业版\vc++2005\项目\4.9\4.9\strtype3.cpp 16

请各位大哥指点!!!
发表于 2009-11-6 01:25:47 | 显示全部楼层 IP:江苏扬州
编译器问题吧 我这儿没错
回复

使用道具 举报

发表于 2009-11-6 01:25:48 | 显示全部楼层 IP:江苏扬州
可能你的编译器的 对应头文件不带strcpy和strcat函数

你用字符串变量就可以避开着问题...
回复

使用道具 举报

发表于 2009-11-6 01:25:49 | 显示全部楼层 IP:江苏扬州
哦!
谢谢2楼和3楼的楼主!
strcpy(charr1,charr2);
strcat(charr1,"juice");
int len1=str1.size();
int len2=strlen(charr1);
这些如何表示呢?我用的是VC++2005
还有我把<cstring>改成<string.h>也不行了!
把strcat()和strcpy()改成strncat()和strncpy()也不行!!
能不能在<cstring>中添加入strcat()和strcpy()呢?如何添加?
回复

使用道具 举报

发表于 2009-11-6 01:25:51 | 显示全部楼层 IP:江苏扬州
  1. #include <iostream>
  2. #include <cstring>
  3. #include <string>

  4. int main()
  5. {
  6. using namespace std;
  7. char charr1[20];
  8. char charr2[20]="jaguar";
  9. string str1;
  10. string str2="panther";
  11. str1=str2;
  12. strcpy_s(charr1,charr2);
  13. str1+="paste";
  14. strcat_s(charr1,"juice");
  15. size_t len1=str1.size();
  16. size_t len2=strlen(charr1);
  17. cout<<"The string "<<str1<<" contains "<<len1<<" character.\n";
  18. cout<<"The string "<<charr1<<" contains "<<len2<<" character.\n";
  19. return 0;
  20. }
复制代码


这样没问题了吧!

其实不用在意,2005中增加了安全性考虑,大概就是建议你不使用c的字符串处理。
可以在函数后加_s识别。
后面那2个警告是因为由int转换到size_t类型(机器相关的无符号整形),丢失。改个类型就可以了!

其他的具体就不很清楚了!
回复

使用道具 举报

发表于 2009-11-6 01:25:52 | 显示全部楼层 IP:江苏扬州
哦!
非常感谢aipb2007!!
我懂了!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 17:19 , Processed in 0.188037 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表