读书人

如何会有空格不是while ( spamFile

发布时间: 2012-02-16 21:30:36 作者: rapoo

怎么会有空格,不是while ( spamFile >> word )明明过滤掉的吗
在上面帖子的程序里,spamFrequencyFile.txt里怎么会有空格呢(就是有些行的最前面)?

while ( spamFile > > word )缺省不是忽略空格、换行符、制表符什么的吗?(很纳闷)


code:
#include "SpamFrequency.h "

map <string, unsigned int> spamFrequencyMap;

int SpamFrequency()
{

ofstream spamFrequencyFile;

//nameSpam里存取垃圾文本文件名
string prefixSpam = "spam ";//垃圾样本名字前缀
string postfixSpam = "c ";//垃圾样本名字后缀
string middleSpam;

string word;
size_t pos;

map <string, unsigned int> tempspamFrequencyMap;

//for循环是为了统计所有的文本文件
for ( int k=1; k <=SPAMMAILNUM; k++)
{
middleSpam = IntToString(k);
string nameSpam = "spam\\ " + prefixSpam + middleSpam + postfixSpam + ".txt ";

ifstream spamFile;
spamFile.open (nameSpam.c_str ());

if ( !spamFile )
{
cerr < < "error: unable to open input spam file!\n ";
return -1;
}

while ( spamFile > > word )
{
pos = word.find_last_of ( '/ ');
if ( pos != string::npos )
{
word = word.substr ( 0, pos );
tempspamFrequencyMap[word]++;

unsigned int count=tempspamFrequencyMap[word];
//只存储token 出现次数超过3个
if ( count> =3)
{
spamFrequencyMap[word] = count;


}
}
}

spamFile.close ();
}

spamFrequencyFile.open ( "spamFrequencyFile.txt ");

if (!spamFrequencyFile )
{
cerr < < "error: unable to open output spam file!\n ";
return -2;
}

typedef map <string, unsigned int> ::iterator typeIter;

for (typeIter it=spamFrequencyMap.begin(); it!=spamFrequencyMap.end(); it++)
{
spamFrequencyFile < < (*it).first < < " " < < (*it).second < <endl;
}
spamFrequencyFile.close ();

return 0;
}

[解决办法]
啥编译器?
VC6没打sp6补丁吧。
[解决办法]
A1不可打印字符,不是空格类字符,C++流当然不会把它过滤掉。
[解决办法]
中文空格不是空格。
[解决办法]
汉字是双字节 ascii是单字节
不是一类东西啊

读书人网 >C++

热点推荐