C++ 使用strcpy_s函数将字符串复制到字符数组
C++使用strcpy_s函数将字符串复制到字符数组,如何操作?在VS当中,strcpy已经被禁用了,原因不安全,所以使用strcpy_s不要说不行,书上写着:可以使用函...
C++ 使用strcpy_s函数将字符串复制到字符数组,如何操作?
在VS当中,strcpy已经被禁用了,原因不安全,所以使用strcpy_s
不要说不行,书上写着:可以使用函数strcpy将字符串复制到字符数组中
而strcpy_s是strcpy的升级版
回答请一针见血。
下面是我代码:
#include <iostream>
#include <string>
int main()
{
char name1[20] = "吃了没?世界";
std::string name2 = "吃了" ;
strcpy_s(name1,name2.size()+1,name2);
std::cout << name1 << std::endl;
std::cin.get();
return 0;
} 展开
在VS当中,strcpy已经被禁用了,原因不安全,所以使用strcpy_s
不要说不行,书上写着:可以使用函数strcpy将字符串复制到字符数组中
而strcpy_s是strcpy的升级版
回答请一针见血。
下面是我代码:
#include <iostream>
#include <string>
int main()
{
char name1[20] = "吃了没?世界";
std::string name2 = "吃了" ;
strcpy_s(name1,name2.size()+1,name2);
std::cout << name1 << std::endl;
std::cin.get();
return 0;
} 展开
4个回答
展开全部
#include <iostream>
#include <string>
int main()
{
char name1[20] = "吃了没?世界";
std::string name2 = "吃了" ;
strcpy_s(name1, name2.size()+1, name2.c_str());//这个改成name2.c_str(),name2是string类型,不是char*
std::cout << name1 << std::endl;
std::cin.get();
return 0;
}
扩展资料:
strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为。用strcpy_s就可以避免这些不可预料的行为。
strcpy_s 一般使用三个参数
errno_t strcpy_s(
char *strDestination,
size_t numberOfElements,
const char *strSource
);
展开全部
strcpy_s有两个重载版本
strcpy_s<dest size>(dest,src);
dest size必须是编译期常量 且必须是sizeof(dest);
第二个版本是目的长度执行期才知道
strcpy_s(dest, sizeof(dest),src);
之所以加后缀 _s 是因为防止拷贝时缓冲区溢出,所以程序员务必告诉 C runtime 目的地址确切的长度。
strcpy_s<dest size>(dest,src);
dest size必须是编译期常量 且必须是sizeof(dest);
第二个版本是目的长度执行期才知道
strcpy_s(dest, sizeof(dest),src);
之所以加后缀 _s 是因为防止拷贝时缓冲区溢出,所以程序员务必告诉 C runtime 目的地址确切的长度。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <string>
int main()
{
char name1[20] = "吃了没?世界";
std::string name2 = "吃了" ;
strcpy_s(name1, name2.size()+1, name2.c_str());//这个改成name2.c_str(),name2是string类型,不是char*
std::cout << name1 << std::endl;
std::cin.get();
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要不要把
strcpy_s(name1,name2.size()+1,name2);
写成
strcpy_s(name1,name2.size()+1,name2.c_str());
啊。
strcpy_s(name1,name2.size()+1,name2);
写成
strcpy_s(name1,name2.size()+1,name2.c_str());
啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询