[问题] 用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