Dalam kod C yang mengandungi baris berikut:
file.open(name);
ralat biasa ialah:
no matching function for call 'std::ifstream::open(std::string&)'
Ini isu timbul kerana versi lama C (sebelum C 11) tidak menyokong membuka fail menggunakan argumen std::string. Fungsi open() memerlukan tatasusunan aksara atau rentetan gaya C.
Untuk menyelesaikan ralat ini, seseorang boleh menggunakan salah satu daripada pendekatan berikut :
file.open(name.c_str());
std::ifstream file(name.c_str());
Pendekatan ini menghapuskan keperluan untuk memisahkan pembinaan dan pembukaan.
Selain itu, untuk memastikan bahawa fungsi loadNumbersFromFile() tidak mengubah suai hujahnya, ia adalah dinasihatkan untuk lulus dengan merujuk kepada std::string malar sebaliknya:
std::vector<int> loadNumbersFromFile(const std::string& name) { // ... }
Atas ialah kandungan terperinci Mengapakah `ifstream::open(std::string)` Gagal dalam Versi C Lama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!