C++ 文件(string讀寫)


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM