我想使用strcpy_s将字符串转换为char,但它给出了一个大小错误

时间:2015-10-04 00:06:05

标签: c++ string strcpy

我正在尝试使用strcpy_s,但是我得到另一个处理大小的错误,当我尝试运行程序时说L "Buffer is too small && 0",我不知道来自{{1}的sizeof tochar是正确的,因为我一直收到这个错误。

完整的编译代码:

strcpy_s(tochar, sizeof tochar, test.c_str());

我无法在c ++ 2015中使用 #include "stdafx.h" #include <string> #include <string.h> #include <cstring> #include <stdlib.h> #include <errno.h> #include "stdafx.h" #include <iostream> #include <string> #include <fstream> #include <vector> #include <sstream> #include <iomanip> #include <stdio.h> using namespace std; using std::vector; using std::string; int main() { std::string test; std::vector<std::string> v3 = { "filename1", "filename2","filename3", }; for (int m = 0; m < v3.size(); m++) { test = "\"" + v3[m] + ".txt" + "\""; char * tochar = new char[test.length() + 1]; strcpy_s(tochar, sizeof tochar, test.c_str()); std::cout << tochar << std::endl; } return 0; } ,我现在必须使用strcpy因为strcpy_s给出了不同的错误,我不想只是关闭错误。 (除非我可以在程序中放入某种代码,以便用strcpy进行编译)

我希望strcpy输出:“filename1.txt”

3 个答案:

答案 0 :(得分:1)

strcpy_s的第二个副本应该是您要复制的字符数。

strcpy_s(tochar, test.length() + 1, test.c_str());
我认为,

是写它的一种方式。

sizeof tochar

给出了char指针变量的大小,而不是你已经分配的数组的大小。

答案 1 :(得分:1)

而不是这个strcpy_s(tochar,sizeof tochar,test.c_str());你需要做的 strcpy_s(tochar,test.length()+ 1,test.c_str());

当你说sizeof tochar时,你有4或8的值,因为它是一个指针。 但是对于api,你需要告诉目标数组的大小

答案 2 :(得分:0)

使用strcpy 尽量不要使用

#include <stdio.h>

使用

#include <cstdio>