[問題] 用string讀取整個file的問題

作者: feanor (費諾)   2014-07-18 05:15:23
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
visualstudio2013
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
#include<iostream>
#include<fstream>
#include<string>
問題(Question):
好像從檔案中讀出來的string沒有讀完,且也沒辦法做處理.
餵入的資料(Input):
a
a
a
a
a
a
a
預期的正確結果(Expected Output):
7
錯誤結果(Wrong Output):
0
程式碼(Code):(請善用置底文網頁, 記得排版)
int main()
{
infile.open("test1.txt");
if (infile.fail())
{
cout << "The opening of the input file failed." << endl;
} //check infile
cout<<countblank(read_file(infile))<<endl;
infile.close();
return 0;
}
string read_file(ifstream& infile)
{
string text; //For string of the file
string temp; //For getting the string
while (!infile.eof())
{
getline(infile, temp);
text.append(temp);
} // To get the whole string from the file
return text; // Return String text
}
int countblank(string article)
{
int counterblank = 0;
string::iterator it;
for (it = article.begin(); it != article.end(); it++)
{
if ((*it == ' ') || (*it == '\n')||(*it == '-'))
{
counterblank++;
}
}
return counterblank;
}
補充說明(Supplement):
我的第二個函式主要是要來讀取空白或是換行等等
我是拿以前的程式碼貼上去的
所以我想沒有甚麼問題
所以我想問題可能再讀取那邊
BTW 它除了沒有去數空白及換行的數目之外
讀出來的string也不讓我做大小寫轉換
作者: LPH66 (-6.2598534e+18f)   2014-07-18 15:32:00
getline 讀進來的字串不含最後的換行, 所以你的 text 的內容將會是連續的七個 a因此 countblank 的結果自然是 0 了至於你的大小寫轉換是怎麼做的? 也貼一下程式吧
作者: Killercat (殺人貓™)   2014-07-18 15:53:00
提外話 通常用vector<char>來當容器會好一點可以免除依些binary要做的特殊處理問題
作者: xvid (DivX)   2014-07-18 21:17:00
我是不太愛用C-string 用個transform作處理其實也還ok

Links booklink

Contact Us: admin [ a t ] ucptt.com