VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 714|回复: 6

求助:文件问题

[复制链接]

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-27 20:20:01 | 显示全部楼层 |阅读模式
文件中有很多单词,将其读出存入链表中,各位大哥大姐,该怎么做,给出个具体可以运行没有错误的答案吧,小弟在此谢谢了!!!
回复

使用道具 举报

2

主题

54

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-2-22 19:45:01 | 显示全部楼层
getline()读入一行到str,分离每个单词
然后list::push_back()
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-2-29 20:30:02 | 显示全部楼层
可否说详细点,小弟菜鸟一个。
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-2 18:15:01 | 显示全部楼层
#include <iostream>
#include <fstream>
#include <list>
#include <string>
using namespace std;
bool is_word(word){
//判断是不是单词就看你的自己要求了,如果粗略的话
return true;
};
int main(){
cout<<"请输入文件名:";
string fname;
cin>>fname;
ifstream in(fname);
string word;
list<string> ls;
while(in >> word){
if( is_word(word) ){
  ls.push_back(word);
}//endif
}//endwhile
cout<<"单词表:\n";
copy(ls.begin(),ls.end(),ostream_iterator<string>(cout,"\n") );
}
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-2 20:15:01 | 显示全部楼层
漏了两个头文件
#include <algorithm>
#include <iterator>
回复

使用道具 举报

2

主题

54

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-3-4 18:30:01 | 显示全部楼层
#include <iostream>
#include <string>
#include <list>
#include <vector>
#include <fstream>

using namespace std;

void separate_word(const string &str, vector<string> &svec)
{
        string::size_type pos = 0;
        string::size_type prev_pos = 0;

        string word;
        int lenOfWord;

        while ((pos = str.find_first_of(' ', pos)) != string::npos)
        {
                lenOfWord = pos - prev_pos;
                word = str.substr(prev_pos, lenOfWord);
                svec.push_back(word);
                prev_pos = ++pos;
        }

        //the last word
        lenOfWord = str.size() - prev_pos;
        word = str.substr(prev_pos, lenOfWord);
        svec.push_back(word);

        return;
}

void getstr(string file_read, vector<string> &svec_line)
{
        ifstream infile(file_read.c_str());
        if (!infile)
        {
                cerr << "open file error" << endl;
                exit(-1);
        }
        else
        {
                string textline;
                while (getline(infile, textline, '\n'))
                {
                        svec_line.push_back(textline);
                }
        }
}

void initList(list<string> &slist, vector<string> &svec)
{
        vector<string>::const_iterator cit = svec.begin();
        while(cit != svec.end())
        {
                slist.push_back(*cit);
        }
}

int main()
{
        cout << "Please enter the file name: ";
        string file_name;
        cin >> file_name;

        vector<string> svec_line;
        getstr(file_name, svec_line);

        vector<string>::const_iterator cit = svec_line.begin();
        vector<string> svec;
        for (; cit != svec_line.end() ; ++cit)
        {
                separate_word(*cit, svec);
        }
       
        list<string> slist;
        initList(slist, svec);

        return 0;
}
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-3-6 14:00:01 | 显示全部楼层
thank you !
有没有用c写的啊,小弟再次有礼了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表