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)) { ... } }