首頁 >後端開發 >C++ >為什麼我的 `ifstream.open()` 不能在 Dev-C 中使用字串?

為什麼我的 `ifstream.open()` 不能在 Dev-C 中使用字串?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-02 20:53:14208瀏覽

Why Doesn't My `ifstream.open()` Work with a String in Dev-C  ?

在dev cpp 中找不到ifstream 的開啟函數

提供的程式碼嘗試使用file.open(name) 開啟文件,其中名稱是一個字串。但是,此程式碼在 Visual Studio (VS) 中編譯成功,但在 dev cpp 中編譯失敗。錯誤訊息表示帶有字串參數的 open 方法沒有匹配的函數。

此問題的根本原因是在open 函數中使用字串參數的支援只是在C 11 中引入的雖然VS 支援C 11,但dev cpp 似乎使用舊版的C 標準,其中不包括此內容。

解:

要解決這個問題,有兩種方法:

  1. 使用c_str( ) : 使用c_str() 方法將字串參數轉換為字元數組,並將該數組傳遞給open函數:

    file.open(name.c_str());
  2. 使用建構子: 或者,您可以使用帶有字串參數的ifstream 建構子:

    std::ifstream file(name.c_str());

此外,為了避免不必要的複製,建議將字串參數傳遞給透過常數引用loadNumbersFromFile():

std::vector<int> loadNumbersFromFile(std::string const&amp; name)

以上是為什麼我的 `ifstream.open()` 不能在 Dev-C 中使用字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn