好的,所以我正在尝试修复我的C ++赋值,但是当我使用strcpy_s它只适用于我的数组而不是我的*指针..这就是我正在使用的内容:
HotelRoom::HotelRoom(char Num[], int cap, double daily, char* name, int Stat)
{
strcpy_s(room_Num, Num); //copy first argument into room_Num[]
guest = new char[strlen(name) +1]; //create space for the name
strcpy_s(guest, name); //copy second argument into new space
capacity = cap;
dailyRate = daily;
occupancyStat = Stat;
}
这是我以这种方式使用strcpy_s(guest,name)时得到的错误; :
“没有重载函数的实例”strcpy_s“匹配参数列表参数类型是:(char *,char *)”。
答案 0 :(得分:3)
非标准strcpy_s
需要一个额外的参数,而不是std::strcpy
,这是您要复制的最大尺寸。
errno_t strcpy_s(char *s1, size_t s1max, const char *s2);
您需要的是标准C函数std::strcpy
。
char *strcpy(char *s1, const char *s2);
答案 1 :(得分:1)
查看文档:{{3}}
如果因为没有传递静态大小的数组而无法自动确定大小,则必须提供它。
#include <string.h>
int main()
{
char src[] = "Hello World!\n";
char staticDest[100];
size_t dynamicSize = strlen(src) + 1;
char* dynamicDest = new char[dynamicSize];
//Use the overload that can determine the size automatically
//because the array size is fixed
//template <size_t size> errno_t strcpy_s(char(&strDestination)[size], const char *strSource);
strcpy_s(staticDest, src);
//Use the overload that requires an additional size parameter because
//the memory is dynamically allocated
//errno_t strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource);
strcpy_s(dynamicDest, dynamicSize, src);
return 0;
}
答案 2 :(得分:0)
以下内容应该有效:
strcpy_s(guest, strlen(name), name); //copy second argument into new space