[問題] 從txt檔裡找有使用者輸入相符的單字

看板C_and_CPP (C/C++)作者 (銀澄)時間15年前 (2010/12/01 20:09), 編輯推噓0(003)
留言3則, 3人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 這是上c++老師給的作業 要設計一個程式 要讓使用者輸入一個單字 然後從字典(.txt檔)裡抓出有相符的單字出來 如:使用者輸入:ing 螢幕要輸出 ring happing going . . . 遇到的問題: (題意請描述清楚) 編譯成功,但是使用者輸入後跳出錯誤 希望得到的正確結果: 請輸入一個字 ing 字典找到ring 字典找到going 字典找到happing . . . 程式跑出來的錯誤結果: 請輸入一個字 ing terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) G++ 有問題的code: (請善用置底文標色功能) #include<iostream> #include<string> #include<fstream> using namespace std; int main(){ string str1,str2; int x,y; cout<<"請輸入一個字"<<endl; cin>>str1; fstream f1; f1.open("/.dict.txt"); x=str1.size(); while(!f1.eof()){ getline(f1,str2); y=str2.size(); if(str2.substr(y-x+1,x)==str1){ cout<<"字典找到"<<str2<<endl; } } f1.close(); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.124.104.173

12/01 20:11, , 1F
out_of_range => 我猜是你的 substr 越界了
12/01 20:11, 1F

12/01 20:25, , 2F
if (y<x-1), y-x+1<0, then substr(y-x+1,x)...
12/01 20:25, 2F

12/01 20:57, , 3F
恩 我找到錯誤了!!
12/01 20:57, 3F
文章代碼(AID): #1CzZiCeN (C_and_CPP)
文章代碼(AID): #1CzZiCeN (C_and_CPP)