注册 登录
编程论坛 C++教室

从TXT文件中读取数字并输出

fl8962 发布于 2014-01-16 09:06, 688 次点击
一个TXT 文件中存储着数字,但是数字之间有空格将它们分开,并且有换行符。
5 12 32 56
21 21.2 56 38
就是这么一个TXT文件,我想编写一个程序能逐个把其中的数字输出。下面是我的代码:
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
int main()
{
    ofstream writefile("number.txt");
   if(writefile.good())
     cout<<"can open it"<<endl;
      writefile.close();
    ifstream readfile("number.txt");
    vector<string> reading;
    string op;
    while(readfile>>op)
     {
        if(op!=" "&&op!="\r")
        reading.push_back(op);
        cout<<op;
      }

     vector<string>::iterator a;
     a=reading.begin();
     for(a=reading.begin();a!=reading.end();++a)
      {
          cout<<(*a)<<endl;
      }

     return 0;
}
我学C++只有半年,一些高深的东西还没学到,这是我现在能够想到的思路。请大家帮忙指点下我的错误,告诉我正确的方法。万分感谢。
2 回复
#2
rjsp2014-01-16 11:17
你的代码……,你想实现什么目的?
比如main代码中前4句,你是不是想清空 number.txt 的内容?如果是,那后面为什么又要读其内容呢?

程序代码:
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iterator>

int main()
{
    std::ifstream file( "number.txt" );
    copy( std::istream_iterator<double>(file), std::istream_iterator<double>(), std::ostream_iterator<double>(std::cout,"\n") );

    return 0;
}
或者
程序代码:
#include <iostream>
#include <fstream>

int main()
{
    std::ifstream file( "number.txt" );
    for( double v; file>>v; )
    {
        std::cout << v << '\n';
    }
    std::cout << std::flush;

    return 0;
}

#3
i802862014-01-16 11:20
while(readfile>>op)
{
    if(op!=" "&&op!="\r")
    reading.push_back(op);
    cout<<op;
 }

改成:
do
{
   readfile>>op;
   if(readfile.eof())
   {
      reading.push_back(op);
      break;
    }
    else
      reading.push_back(op);
}while (!readfile.eof());

还有,如果找不到number.txt,应该选择退出该程序,或者做一个循环,重新输入正确的文件名

ofstream writefile("number.txt");这样会清空该文件,可以改成 ofstream writefile("number.txt",ios::app);

[ 本帖最后由 i80286 于 2014-1-16 11:26 编辑 ]
1