编程论坛
注册
登录
编程论坛
→
C++教室
初学者求教,判断文件单词数的问题
dx2880
发布于 2008-04-02 21:23, 914 次点击
假设文件中的词为由一个或多个空白字符(SPACE,TAB,NEWLINE)分隔开的字符串。编写一个程序,计算输入文件(cin)的单词数。
原题就是这样的,麻烦哪位大大帮忙写一下
3 回复
#2
sunkaidong
2008-04-02 22:34
#include <string>
#include <map>
#include <iostream>
using namespace std;
int main()
{
char str[500];
char *strToken;
char strDelimit[] = " ,.?!";
int wordCount = 0;
map<string, int> words;
map<string, int>::iterator iter;
cout << "Please input a passage:" << endl;
cin.getline( str, sizeof(str) );
strToken = strtok( str, strDelimit );
while ( strToken != NULL )
{
iter = words.find(strToken );
if ( iter == words.end() )
{
words.insert( pair<string, int>(strToken, 1 ) );
}
else
{
iter->second++;
}
++wordCount;
strToken = strtok( NULL, strDelimit );
}
for ( iter=words.begin(); iter!=words.end(); ++iter )
{
cout << "Words begin with " << iter->first << ": " << iter->second << endl;
}
cout << "Total words: " << wordCount << endl;
}
#3
xjywc
2008-04-04 14:20
这是我原来写的判断字符串个数的程序,可能不是很符合,但是你自己看着修改一下就可以了
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct Pair
{
string name;
int count;
};
vector<Pair>pairs;
int& new_pairs(const string& s)
{
for (int i=0;i<pairs.size();i++ )
{
if (s==pairs[i].name)
{
return pairs[i].count;
}
}
Pair p={s,0};
pairs.push_back(p);
return pairs[pairs.size()-1].count;
}
int main()
{
string s;
while(cin>>s)
{ if (s=="quit")
break;
new_pairs(s)++;
}
for (vector<Pair>::const_iterator p=pairs.begin() ; p!=pairs.end() ; ++p)
{
cout<<p->name<<":"<<p->count<<"\n";
}
system("pause");
}
dev-c++下编译通过
#4
sunkaidong
2008-04-04 18:06
我的已经可以统计了..而且可以统计相同的单词个数..
1