老师布置的作业出问题啦!
要求:查找文件中特定单词的数量。要求用到vector和string 类的"==".
我写的代码:
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
int main()
{
int j=0;
string str;
vector<string> v;
ifstream in("TestFile.txt");
while (in>>str)//每次读入一个单词;
v.push_back(str);
for(int i=0;i<v.size();i++)
{
if(v[i]=="copy")
j++;
}
cout<<j<<endl;
}
TestFile.txt 文件的内容是:
copy copy copy copy, enter this is a test file.
出现的问题:结果为3,我想是因为最后一个copy后面有个逗号.高手来改下,让它过滤掉这个逗号啊!
问题点数:30、回复次数:14Top
1 楼sunman1982(冥王星)回复于 2005-06-01 12:39:04 得分 0
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
int main()
{
int j=0;
string str;
vector<string> v;
ifstream in("TestFile.txt");
while (in>>str)//每次读入一个单词;
v.push_back(str);
for(int i=0;i<v.size();i++)
{
if(v[i]=="copy"||v[i]=="copy,")//呵呵
j++;
}
cout<<j<<endl;
system("pause");
}
顺便一问 楼主你大几 学习什么专业的?Top
2 楼sunman1982(冥王星)回复于 2005-06-01 12:40:08 得分 0
或者你在copy后面加个空格 因为string是按照空格来划分的Top
3 楼sunman1982(冥王星)回复于 2005-06-01 12:40:58 得分 0
我得意思是
TestFile.txt 文件的内容是:
copy copy copy copy , enter this is a test file.
这样Top
4 楼csgasdfg(EarnSomething)回复于 2005-06-01 12:41:05 得分 0
这么快啊!我刚大2呢!软件专业的!
谢谢了哈!Top
5 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2005-06-01 12:41:38 得分 25
根据你这样的情况,你可以写如下的代码
if(v[i].substr(0,4)=="copy")Top
6 楼csgasdfg(EarnSomething)回复于 2005-06-01 12:42:58 得分 0
我晕!要是别的标点符号怎么办啊!Top
7 楼lbing7(向青润老大学习!!!)回复于 2005-06-01 12:43:52 得分 5
我晕!
去改人家的题目了!!
.....................................
你在读文件的时候能不能一个字符一个字符的读?
读到空隔或者非字符再将前面的单词赋给string?
这样不用去改人家的题目Top
8 楼csgasdfg(EarnSomething)回复于 2005-06-01 12:44:29 得分 0
哪个testfile文件是我随便写的啊~~~不是老师给的哦~Top
9 楼majcos(千里之行,始于足下)回复于 2005-06-01 12:44:41 得分 0
不知道C++里面有没有正则表达式的类,用正则表达式比较方便Top
10 楼foochow(无聊,灌水......)回复于 2005-06-01 12:48:26 得分 0
goodboy1881(三井寿)(快要闭关了) 的方法不错Top
11 楼sunman1982(冥王星)回复于 2005-06-01 12:51:59 得分 0
回复人: goodboy1881(三井寿)(快要闭关了) ( ) 信誉:105 2005-06-01 12:41:00 得分: 0
根据你这样的情况,你可以写如下的代码
if(v[i].substr(0,4)=="copy")
------------------
可是要是这种情况呢
copy ,copy ......Top
12 楼cmoring(my study will go on)回复于 2005-06-01 13:04:04 得分 0
if (v[i].substr(0,4) == "copy" ) 可以的,即使是copy ,copy ......也成,sting按空格分开每一个串的。
Top
13 楼sunman1982(冥王星)回复于 2005-06-01 13:09:12 得分 0
楼上你可能看错了 后面那个逗号是和copy连在一起了 呵呵 所以 不可以Top
14 楼csgasdfg(EarnSomething)回复于 2005-06-01 23:14:24 得分 0
谢谢各位的指教Top




