Rumah >pembangunan bahagian belakang >C++ >Mengapa `ifstream.open()` Saya Tidak Berfungsi dengan String dalam Dev-C ?
Fungsi Terbuka Tidak Ditemui untuk ifstream dalam dev cpp
Kod yang disediakan cuba membuka fail menggunakan file.open(name), di mana nama ialah rentetan. Walau bagaimanapun, kod ini berjaya menyusun dalam Visual Studio (VS) tetapi tidak dalam dev cpp. Mesej ralat menunjukkan bahawa tiada fungsi padanan untuk kaedah terbuka dengan argumen rentetan.
Punca isu ini ialah sokongan untuk menggunakan argumen rentetan dalam fungsi terbuka hanya diperkenalkan dalam C 11 . Walaupun VS menyokong C 11, dev cpp nampaknya menggunakan versi lama standard C, yang tidak termasuk ini ciri.
Penyelesaian:
Untuk menyelesaikan isu ini, terdapat dua pendekatan:
Gunakan c_str( ): Tukarkan hujah rentetan kepada tatasusunan aksara menggunakan kaedah c_str() dan hantar tatasusunan itu kepada tatasusunan terbuka fungsi:
file.open(name.c_str());
Gunakan Pembina: Sebagai alternatif, anda boleh menggunakan pembina ifstream yang mengambil hujah rentetan:
std::ifstream file(name.c_str());
Selain itu, untuk mengelakkan salinan yang tidak diperlukan, disyorkan untuk menghantar hujah rentetan kepada loadNumbersFromFile() dengan rujukan berterusan:
std::vector<int> loadNumbersFromFile(std::string const& name)
Atas ialah kandungan terperinci Mengapa `ifstream.open()` Saya Tidak Berfungsi dengan String dalam Dev-C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!