首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何会有空格,不是while ( spamFile >> word )明明过滤掉的吗

2012-02-16 
怎么会有空格,不是while ( spamFile word )明明过滤掉的吗在上面帖子的程序里,spamFrequencyFile.txt里

怎么会有空格,不是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是单字节
不是一类东西啊

热点排行