我正在尝试使用strcpy_s,但是在处理大小时出现另一个错误,我说:L "Buffer is too small && 0"
当我尝试运行程序时,我不知道sizeof tochar
中的strcpy_s(tochar, sizeof tochar, test.c_str());
是否正确,因为我一直在获取它错误。
完整的编译代码:
#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;
}
我不能在c ++ 2015中使用
strcpy
,我现在必须使用strcpy_s
,因为strcpy
会给出不同的错误,并且我不想只是关闭错误。 (除非我可以在程序中放入某种代码,使其能够使用strcpy
进行编译)我希望
tochar
输出:“ filename1.txt” 最佳答案
到strcpy_s的第二个副本应该是您希望复制的字符数。
strcpy_s(tochar, test.length() + 1, test.c_str());
我认为,这将是一种编写方式。
sizeof tochar
给你char指针变量的大小,而不是分配的数组的大小。