http://blog.csdn.net/mafuli007/article/details/7314917
构造二维动态数组 需要注意delete时,要删除两次
输入流,在做过各种操作后 要先close 再clear,因为如果先clear,close时候有可能这个文件本来就不存在,造成falibit状态变成错误。
了解seekg的复位功能
了解cout << typeid(d).name() << endl;可检测变量的类型
http://blog.csdn.net/mafuli007/article/details/7314917
int main()
{
ifstream infile;
infile.open("test.txt");
int word_nums=0;
int line_num=0;
if (!infile)
{
cerr<<"can't open file: "<<infile<<endl;
}
string str;
while(!infile.eof())
{
getline(infile,str);
remove(str.begin(),str.end(),' ');//不考虑每行的空格 制表符 \n
remove(str.begin(), str.end(), '\t');
if (str.length()>0)
{
++line_num;
}
}
cout<<line_num<<endl;
infile.seekg(0,ios::beg);
int word;
while(infile>>word)
{
++word_nums;
}
cout<<word_nums<<endl;
int *p=new int[word_nums];
//
// infile.close();
infile.clear();
// infile.open("test.txt");
infile.seekg(0,ios::beg); ///这个问题!!!!!!!!!但为什么这样不行呢?
//感觉应该是由于 第一个seekg造成了 failbit状态。。 因为seekg是读取二进制文件的?
for (int i=0;i!=word_nums;++i)
{
infile>>p[i];
}
cout<<endl;
for (int i=0;i!=word_nums;++i)
{
cout<<p[i]<<" ";
}
delete[] p;
infile.close();
infile.clear();
return 0;
}