处理单词字符?再按字典顺序排列?
来源:互联网 发布:新希望淘宝培训班义乌 编辑:程序博客网 时间:2024/05/21 16:50
在C++社区里看到的一道笔试题,自己用STL实现了一下,遇到一个文件操作方面的问题:
void f(const ifstream &fin)
{
char ch = fin.get(); // 这样会出错,如果去掉const就不会出错
}
现在还弄不明白怎么会这样.
/**//*
比如文件file.txt中存放的是单词
单词使用空格,逗号和点分隔,
若文件中是I don 't know you don 't know I know
则要输出
don 't
i
know
you
也就是需要对单词排序,没搞定这道垃圾题
考查知识:文件操作,插入排序? 链表操作?
用STL中的list实现
*/
#include<iostream>
#include<fstream>
#include<list>
#include<string>
using namespace std;
void wordsort(ifstream &fin, list<string> &Q)
...{
string tmp;
char ch;
bool Inword; //判断是否在单词内
Inword = false;
tmp.clear();
while((ch = fin.get()) != EOF)
...{
switch(ch)
...{
case ' ':
case ',':
case '.':
Inword = false;
break;
default:
Inword = true;
break;
}
if(Inword == true)
...{
tmp += (ch >= 'A' && ch <= 'Z') ? ('a' + ch - 'A') : ch;
}
if(!tmp.empty() && !Inword)
...{
Q.push_back(tmp);
tmp.clear();
}
}
if(!tmp.empty())
Q.push_back(tmp);
Q.sort();
Q.unique();
}
int main()
...{
ifstream fin("a.txt");
list<string> Q;
wordsort(fin, Q);
fin.close();
for(list<string>::iterator p = Q.begin(); p != Q.end(); ++p)
cout << *p << ' ';
cout << endl;
return 0;
}
比如文件file.txt中存放的是单词
单词使用空格,逗号和点分隔,
若文件中是I don 't know you don 't know I know
则要输出
don 't
i
know
you
也就是需要对单词排序,没搞定这道垃圾题
考查知识:文件操作,插入排序? 链表操作?
用STL中的list实现
*/
#include<iostream>
#include<fstream>
#include<list>
#include<string>
using namespace std;
void wordsort(ifstream &fin, list<string> &Q)
...{
string tmp;
char ch;
bool Inword; //判断是否在单词内
Inword = false;
tmp.clear();
while((ch = fin.get()) != EOF)
...{
switch(ch)
...{
case ' ':
case ',':
case '.':
Inword = false;
break;
default:
Inword = true;
break;
}
if(Inword == true)
...{
tmp += (ch >= 'A' && ch <= 'Z') ? ('a' + ch - 'A') : ch;
}
if(!tmp.empty() && !Inword)
...{
Q.push_back(tmp);
tmp.clear();
}
}
if(!tmp.empty())
Q.push_back(tmp);
Q.sort();
Q.unique();
}
int main()
...{
ifstream fin("a.txt");
list<string> Q;
wordsort(fin, Q);
fin.close();
for(list<string>::iterator p = Q.begin(); p != Q.end(); ++p)
cout << *p << ' ';
cout << endl;
return 0;
}
- 处理单词字符?再按字典顺序排列?
- 字符串练习:对字符串数组,按字典顺序排列大小
- 对中文按照字典顺序排列
- hdu 2072 单词数 set+按字符处理
- 数组内元素按字母顺序排序,字典的key按字母顺序排列
- mysql按特定顺序排列
- (STL中自带的排序功能7.3.3)POJ 1318 Word Amalgamation(求解一个单词是否在字典里面。解法:将单词按字典序处理后的结果与字典中的单词安字典序处理后的结果进行比较)
- 4.7 编写一个递归函数,将所输入的 10 个字符按相反顺序排列出来。
- 给定一个字符串列表,找出单词中最长单词,可以用l列表中的其他单词一次构建一个字符。返回具有最小字典顺序的最长单词。
- 字典序单词
- poj 3267 最少需要删除多少个多余字符来匹配字典中的单词
- ORACLE按字母顺序排列字符串
- 两个数组按大小顺序排列
- mysql中按指定顺序排列
- 习题 7.11 写一个函数,用“起泡法”对输入的10个字符按由小到大顺序排列。
- 将一段话切分成单词,按字典顺序排序
- 二叉树 实现 输入单词按字典顺序排序
- python字典按值处理
- 读好书真是享受
- 李嘉诚给年青人提出的52条人生忠告
- aix l5.2安装
- 谈谈.Net里的"分离"
- VS2005的一个MessageBox错误
- 处理单词字符?再按字典顺序排列?
- 学习动态性能表(一)--v$sysstat
- C#,.Net经典面试题目及答案
- 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求
- WindowsServer2003 + IIS6.0 + ASP + NET + PHP + PERL + MSSQL + MYSQL 最新服务器安全设置技术实例
- cool Euro BSD conference materials a BSDer cannot afford to miss
- 1020javascript小技巧学习
- 学习动态性能表(二)--v$sesstat
- 掌握 Ajax,第 3 部分: Ajax 中的高级请求和响应