我知道關於std :: ifstream :: open()有一些問題,但答案並沒有解決我的問題。他們大多數都是特定於Win32的,我使用的是SDL,沒有觸及任何特定於操作系統的功能(......沒有包含到SDL中)。Windows std :: ifstream :: open()問題
問題是:std :: ifstream :: open()似乎不工作了,因爲我已經從Dev-C++切換到Code :: Blocks(我一直在使用相同的MinGW-GCC返回與兩者結束)以及從Windows XP到Vista。 (這也與OS X/Xcode的(GCC後端)完美的作品。)
我的項目針對其來#include <串>,<的iostream >,< fstream的>和<了cassert >靜態庫鏈接,然後調用靜態庫中定義的功能,該功能又調用std :: ifstream :: open()(這次直接)。在此之後,流的計算結果爲false(同時使用隱式布爾轉換運算符和good()方法)。
代碼:
#include "myStaticLibrary.hpp"
int main(int argc, char **argv)
{
std::string filename("D:/My projects/Test/test.cfg");
std::cout << "opening '" << filename << "'..." << std::endl;
bool success(false);
// call to functionality in the static library
{
std::ifstream infile(filename.c_str());
success = infile.good();
// ...
}
// success == false;
// ...
return 0;
}
stdcout.txt說:
開放 'd:/我的項目/測試/ test.cfg' ......
當我打開stdcout.txt,並將路徑與文件名複製粘貼到「開始」菜單/運行,該文件被打開,應該是(我不完全確定這是多少診斷值,但也是,地址轉換爲跟隨着g格式:file:/// D:/My%20projects/test/test.cfg)。
我也嘗試用雙反斜槓轉義序列替換'/'(同樣,斜槓之前工作正常),但結果是相同的。
它是調試版本,但我使用從main()的argv [0]採取的整個絕對路徑。
我在哪裏錯了,我需要做些什麼來解決它?
感謝隱式布爾轉換提示和對信息過多的抱歉(我覺得這是必要的 - 現在我不知道,它是固定的)。我還沒有對所提出的修改進行測試,之後我會回來。 – zyndor 2009-07-04 10:24:29