如何从流中提取出正确的单词,而滤出非单词呢?下面是这样的一个函数:
#ifndef SWORD_H_INCLUDED
#define SWORD_H_INCLUDED
// sword.h--从流中读取单词,并把它保存到vector中
#include <iostream>
#include <string>
#include <vector>
std::vector<std::string>& sword(std::istream&, std::vector<std::string>&);
#endif // SWORD_H_INCLUDED
下面是实现函数:
// sword.cpp--从流中读取单词,并把它保存到vector中
// 时间:2012-12-23 15:46:08
#include "sword.h"
#include <cctype>
using std::istream;
using std::string;
using std::vector;
vector<string>& sword(istream& in, vector<string>& words)
{
if (in)
{
string str;
while (in >> str)
{
string::size_type size = str.size();
string::size_type i;
for (i = 0; i != size; i++)
{
if (isupper(str[i]) || islower(str[i]))
{ // 如果是大写或小写字母
continue;
}
else
{
break;
}
}
// 说明对str检查完毕,里面没有非字符
if (i == size)
{
words.push_back(str);
}
}
// 清除流中错误的标志,以使下一次输入有效
//in.clear();
}
return words;
}