错误使用fprintf?获得例外第一次机会例外

时间:2014-11-19 13:45:53

标签: c++ exception file-io printf

我在#0x708A6B2E(msvcr120.dll)"获得"第一次机会异常在第二次执行中print_bit_vector()的第一行。 你能说出原因吗?

代码:

void print_bit_vector(FILE* pFile, std::string title, std::vector<bool> bitVector) {
    fprintf(pFile, "%s:\r\n", title);
    int size = bitVector.size();
    int i = 0;
    for (i = 0; i < size; i++) {
        std::cout << i << std::endl;
    //for (bool bit : bitVector)
        fprintf(pFile, "%d", bitVector.at(i));
    }
    fprintf(pFile, "\r\n");
}

void test() {
    FILE * pFile;
    pFile = fopen("C:\\...\\myfile.txt", "w");

    BC bc("C:\\...\\example_test.txt");
    std::vector<bool> key = std::vector<bool>(128, 0);
    std::vector<bool> input = std::vector<bool>(128, 1);

    print_bit_vector(pFile, "Key", key);
    print_bit_vector(pFile, "Input", input); //Exception inside this execution of print_bit_vector(...)

    bc.setInputsByParty(1, key);
    bc.setInputsByParty(2, input);

    std::vector<bool> outputs;
    bc.compute(outputs);   
    print_bit_vector(pFile, "Output", outputs);

    fclose(pFile);
}

1 个答案:

答案 0 :(得分:1)

只是因为printf中的%s实际上需要char const *,而不是std::string

您可以使用title.c_str()从c ++字符串中获取char const *