[問題] fin 未宣告的識別項

看板C_and_CPP作者 (MILK BABY)時間15年前 (2010/09/25 08:20), 編輯推噓7(7025)
留言32則, 8人參與, 最新討論串1/1
我執行了下列程式 #include <iostream> #include <dirent.h> #include <string> #include <iomanip> #include <fstream> using namespace std; int main() { DIR *D; struct dirent *Dirpath ifstream fin; cout<<"please input the file path \n" ; cout<<"path:" ; string filepath; getline(cin,filepath); D = opendir(filepath.c_str()); while (Dirpath = readdir(D)) { if( strcmp(Dirpath->d_name, ".") != 0 && strcmp(Dirpath->d_name, "..")!= 0 ) { string file_in=filepath+Dirp->d_name; fin.open(file_in.c_str(),ios::in|ios::binary); if (fin.is_open()) { while(!fin.eof()) { } } else {cout<<"file open error\n";} fin.close(); } } system("PAUSE"); return 0; } 然而卻出現 error C2065: 'fin' : 未宣告的識別項 1>c:\vc_test\vc_test\vc_test.cpp(150) : error C2228: '.open' 的左邊必須有類別/結構/等位 1> 型別為 ''unknown-type'' 1>c:\vc_test\vc_test\vc_test.cpp(151) : error C2065: 'fin' : 未宣告的識別項 1>c:\vc_test\vc_test\vc_test.cpp(151) : error C2228: '.is_open' 的左邊必須有類別/結構/等位 1> 型別為 ''unknown-type'' 1>c:\vc_test\vc_test\vc_test.cpp(153) : error C2065: 'fin' : 未宣告的識別項 1>c:\vc_test\vc_test\vc_test.cpp(153) : error C2228: '.eof' 的左邊必須有類別/結構/等位 1> 型別為 ''unknown-type'' 請問我是哪裡沒宣告到??? 謝謝!!! 使用VC++ 2008 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.182.35

09/25 16:32, , 1F
struct dirent *Dirpath; //少了分號
09/25 16:32, 1F

09/25 16:32, , 2F
struct dirent *Dirpath 沒有 ;
09/25 16:32, 2F

09/25 17:23, , 3F
有加了~但問題還是一樣!!!
09/25 17:23, 3F

09/25 17:41, , 4F
原PO有重新build codes嗎?
09/25 17:41, 4F

09/25 17:45, , 5F
我有一個問題, dirent.h 怎麼include進去的?
09/25 17:45, 5F

09/25 17:47, , 6F
先把direct.h跟他的lib改名成dirent.h嗎?
09/25 17:47, 6F

09/25 19:20, , 7F
原po似乎是dirent.h, 不是 direct.h
09/25 19:20, 7F

09/25 19:22, , 8F
= = 似乎看到重點了.. dirent.h是 gcc 的東西, vc 沒有
09/25 19:22, 8F

09/25 19:23, , 9F
看來原 po 似乎該找替代方案..
09/25 19:23, 9F

09/25 19:26, , 10F
可參考 z-10-1, or 10815篇文章(不會查代碼 >"<)
09/25 19:26, 10F

09/25 19:28, , 11F
在文章前大Q (?)
09/25 19:28, 11F

09/25 19:30, , 12F
感謝樓上!!! 文章代碼:#1CbxesFd
09/25 19:30, 12F

09/25 19:35, , 13F
(話說.. 沒有出現 can't find dirent.h 之類的error嗎?
09/25 19:35, 13F

09/25 19:39, , 14F
推一下tro大那篇方法 (有空我要學起來!
09/25 19:39, 14F

09/26 15:47, , 15F
dirent.h 可以在網路上下載,然後放入VC的include的
09/26 15:47, 15F

09/26 15:48, , 16F
資料夾裡,就OK了!!!
09/26 15:48, 16F

09/26 15:54, , 17F
那我再請教一下! 大家的VC++2008都可以直接跑
09/26 15:54, 17F

09/26 15:55, , 18F
windows.h的所有東西嗎? 還是需要什麼額外設定?
09/26 15:55, 18F

09/26 16:11, , 19F
好像要自己加要用的lib在連結器
09/26 16:11, 19F

09/26 16:13, , 20F
呵,樓上的Rebar不就是還要自己改平台需求才能用
09/26 16:13, 20F

09/26 16:14, , 21F
VC2008的專案範本,預設就給你VISTA的600,結果是不能過
09/26 16:14, 21F

09/26 16:23, , 22F
樓上言下之意 W7要用的話要等下一個版本?
09/26 16:23, 22F

09/26 16:25, , 23F
XP作業系統下,用VC2008開Win32範本,裡面程式碼有個設定
09/26 16:25, 23F

09/26 16:25, , 24F
是設成600,要自己改成600以下才能用Rebar。
09/26 16:25, 24F

09/26 16:25, , 25F
W7或其他版本的VC我沒環境觀測,不清楚
09/26 16:25, 25F

09/26 17:01, , 26F
這個我又疑惑了,真的可以下載其它complier header放進
09/26 17:01, 26F

09/26 17:01, , 27F
去用?不會有其它問題?
09/26 17:01, 27F

09/26 17:03, , 28F
之前的直覺是不能這麼用,不然dos.h,graphic.h 放進
09/26 17:03, 28F

09/26 17:03, , 29F
include 資料夾也沒劜法正常動作
09/26 17:03, 29F

09/27 12:46, , 30F

09/27 12:47, , 31F
我在此下載到dirent.h的
09/27 12:47, 31F

09/28 13:14, , 32F
= = 這實在是太神奇了
09/28 13:14, 32F
文章代碼(AID): #1CdR39gQ (C_and_CPP)