Rumah > pembangunan bahagian belakang > C++ > Mengapakah `ifstream::open(std::string)` Gagal dalam Versi C Lama?

Mengapakah `ifstream::open(std::string)` Gagal dalam Versi C Lama?

Susan Sarandon
Lepaskan: 2024-12-10 03:17:10
asal
445 orang telah melayarinya

Why Does `ifstream::open(std::string)` Fail in Older C   Versions?

Tiada Fungsi Padanan: ifstream::open(std::string)

Dalam kod C yang mengandungi baris berikut:

file.open(name);
Salin selepas log masuk

ralat biasa ialah:

no matching function for call 'std::ifstream::open(std::string&)'
Salin selepas log masuk

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.

Penyelesaian

Untuk menyelesaikan ralat ini, seseorang boleh menggunakan salah satu daripada pendekatan berikut :

  • Tukar std::string kepada rentetan gaya C menggunakan c_str() kaedah:
file.open(name.c_str());
Salin selepas log masuk
  • Gunakan pembina untuk kelas ifstream, seperti yang ditunjukkan di bawah:
std::ifstream file(name.c_str());
Salin selepas log masuk

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)
{
    // ...
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan