[問題] vs2008 開檔名string轉char

看板C_and_CPP作者 (還是朋友?)時間14年前 (2011/11/01 03:59), 編輯推噓2(2014)
留言16則, 6人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vs2008 問題(Question): 我用這個 path.c_str() 轉成char 在dev中明明可以讀檔 在vs2008中可以編譯過 但卻會讀不到檔案,因為會印出open file fail 但...我在這之前用cout<< path.c_str() 是有檔名阿 預期的正確結果(Expected Output): 會跳到讀檔那 錯誤結果(Wrong Output): 開不起檔案 程式碼(Code):(請善用置底文網頁, 記得排版) string path="xx.txt"; fstream file; file.open(path.c_str(),ios::in|ios::binary ); int i=0; if(file.is_open() == 0) /* 假如開檔失敗 */ { cout<<"open file fail \n"; } while (!file.eof()) { file >> trainingimagenumber_buf[i]; i++; } file.close(); 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.109.77

11/01 04:42, , 1F
文字檔案應與原始碼檔案置於同一個資料夾內。
11/01 04:42, 1F

11/01 10:09, , 2F
八成是檔案路徑相絕對位置的問題; 相對路徑時不同IDE環
11/01 10:09, 2F

11/01 10:09, , 3F
境的預設位置不一定一樣, 你可以先試著把檔案放在一個絕
11/01 10:09, 3F

11/01 10:10, , 4F
對位置: Ex: "C:\\xx.txt", 看是不是就開得到檔案.
11/01 10:10, 4F

11/01 10:11, , 5F
然後VC用IDE直接run時, 印象中預設相對路徑的base好像是
11/01 10:11, 5F

11/01 10:11, , 6F
在.vcproj的位置, 還是1F j大說的.cpp位置忘記了;
11/01 10:11, 6F

11/01 10:12, , 7F
或者你可以把檔案copy進project folder裡的debug或
11/01 10:12, 7F

11/01 10:12, , 8F
release資料夾裡和.exe擺在一起, 然後直接點兩下run看看
11/01 10:12, 8F

11/01 11:04, , 9F
位置不會是問題...因為dev中有跑過可以~
11/01 11:04, 9F

11/01 11:06, , 10F
dev跟vc對於開檔預設位置的處理不一樣,建議寫成絕對路徑
11/01 11:06, 10F

11/01 11:11, , 11F
我實際上是用絕對可vs是還是讀不到QQ~dev就沒問題好怪
11/01 11:11, 11F

11/01 11:41, , 12F
你的\有用成兩條嗎?
11/01 11:41, 12F

11/01 14:50, , 13F
有阿....不然dev 怎可能能跑@@
11/01 14:50, 13F

11/01 15:05, , 14F
有中文嗎?vs2005 2008 stl對中文路徑支援有點問題可估狗
11/01 15:05, 14F

11/01 17:35, , 15F
有中文@@
11/01 17:35, 15F

11/01 17:43, , 16F
感恩...是中文路徑問題...
11/01 17:43, 16F
文章代碼(AID): #1Ehlu-p8 (C_and_CPP)
文章代碼(AID): #1Ehlu-p8 (C_and_CPP)