1 #include<iostream> 2 #include<fstream> 3 #include<list> 4 #include<string> 5 using namespace std; 6 int main() 7 { 8 ifstream fin("FinalNameListOut.txt"); //讀操作 9 ifstream firstClassNameIn("firstClassNameListOut.txt"); 10 fstream finalNameListOut("thatisit.txt",ios::out); //寫操作 11 const int LINE_LENGTH = 100; //常量使用大寫字母加'_'進行命名 12 char str[LINE_LENGTH]; 13 char str1[LINE_LENGTH]; //此處命名不夠好, 14 while( fin.getline(str,LINE_LENGTH) ) //.getline(char[], int) 15 { 16 string st=str; 17 string st1; 18 while(firstClassNameIn.getline(str1,LINE_LENGTH)) 19 { 20 st1=str1; 21 if(st1.find(st,0)>=0&&st1.find(st,0)<50) //string.find(string,pos)pos為起始位置,當尋找不到時,返回一個極大的值,為4294967295 22 { 23 finalNameListOut<<st<<'\n'; //將string類型的對象st寫入文件中 24 break; 25 } 26 } 27 } 28 system("PAUSE"); 29 return 0; 30 }
Tip:
在第二個while的getline將firstClassNameIn中元素遍歷后,跳出while,回到第一個循環,再運行第二個while時,firstClassNameIn.getline(str1,LINE_LENGTH)返回值為false.
解決方法是在第一個循環中聲明ifstream firstClassNameIn
while( fin.getline(str,LINE_LENGTH) ) //.getline(char[], int) { string st=str; string st1; ifstream firstClassNameIn; while(firstClassNameIn.getline(str1,LINE_LENGTH)) { ... } }