我正在尝试使用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指针变量的大小,而不是分配的数组的大小。

10-01 17:51