我正在尝试使用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”
答案 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>