标题:设计一个数据文件处理程序,求解,急,在线等
只看楼主
n160801426
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-12-27
结帖率:0
已结贴  问题点数:20 回复次数:3 
设计一个数据文件处理程序,求解,急,在线等
源数据文件中含有字符和数字,从中读取数值数据(将连续的数字字符看成一个数值数据),和读取的单词(将连续的字母字符看成一个单词)分别存放在不同的文件中,并且排序后输出显示。
例如:源数据文件old.dat包括:asjjk 12rtr 345 dasdd9&k32*dfasfkjk##dasfdf897,
则生成的数据文件new1.data包括:12  345  9  32  897
单词文件new2.dat包括:asjjk  rtr  dasdd   k  dfasfkjk  dasfdf

搜索更多相关主题的帖子: 设计 数据文件 在线 字符 单词 
2018-12-27 14:29
lyb661
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:47
专家分:83
注 册:2018-12-12
得分:20 
///看看这个怎么样?
#include <iostream>
#include<fstream>
#include<string>
using namespace std;

ifstream is;
ofstream os1,os2;

int main()
{
    char ch;
    int n;
    string word;
    is.open("in.txt");

    os1.open("out1.txt");
    os2.open("out2.txt");

    while(is.get(ch))
    {
        if(isdigit(ch)){
            is.putback(ch);
            is>>n;
            os1<<n<<" ";

        }
        else if(isalpha(ch)){
               word=ch;
                while(is.get(ch)&&isalpha(ch))
                word+=ch;
                os2<<word<<" ";
            }
    }
    is.close();os1.close(); os2.close();

    return 0;
}

运行结果有点出入:
out1: 12 345 2 97

out2: asjjk rtr dasdd k dfasfkjk dasfdf
2019-01-03 13:18
lyb661
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:47
专家分:83
注 册:2018-12-12
得分:0 
不知怎么丢了两个数字?
如果把输出字符或字符串的部分注释掉,则out1输出正好令人满意!
2019-01-03 13:20
levelworm
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-2-27
得分:0 
以下是引用lyb661在2019-1-3 13:20:44的发言:

不知怎么丢了两个数字?
如果把输出字符或字符串的部分注释掉,则out1输出正好令人满意!


输出字符串的部分是不是要往前peek一个ch?感觉多走了一个所以每次字符之后紧跟的数字就吃掉了。
2019-02-27 21:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492322-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029343 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved