我在#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);
}
答案 0 :(得分:1)
只是因为printf中的%s
实际上需要char const *
,而不是std::string
。
您可以使用title.c_str()
从c ++字符串中获取char const *
。