c ++ char vector,删除带有数字的单词加上坏单词后的空格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c ++ char vector,删除带有数字的单词加上坏单词后的空格相关的知识,希望对你有一定的参考价值。

我想我已经非常接近解决这个问题,但是我在其中一条线路上遇到了总线错误。我有一个程序,从一个文件中读取所有单词买入将它们分成字符。有些单词中有数字或标点符号,程序假定在坏单词之后抛出并删除这些单词加上任何空格。比输出新句子。我已经过了很多次,现在一切看起来都很合理,所以我卡住了。我保留了字符(Ccount),空格(Scount)和坏字符(bcount)的计数,它们是坏字和后面的空格中的任何字符。这是我正在处理的部分的代码。

if(cFlag == true){
    int Ccount = 0;
    int Scount = 0;
    int Bcount = 0;

    for(unsigned int i=0; i<chars.size(); i++){
        if(isalpha(chars[i])){
            if(Bcount == 0 ){
                ctemp.push_back(chars[i]);
                Ccount++;
                Scount = 0;
            }
            else if(Bcount != 0 && Scount == 0){
                ctemp.push_back(chars[i]);
                Bcount++;
            }
            else if(Bcount != 0 && Scount != 0){
                for(int i = 0; i < Bcount; i++)
                    ctemp.pop_back();
                ctemp.push_back(chars[i]);
                Bcount = 0;
                Scount = 0;
            }
        }
        else if(isspace(chars[i])){
            if(Bcount == 0){
                ctemp.push_back(chars[i]);
                Ccount = 0;
                Scount++;
            }
            else if(Bcount != 0){
                //for (int i=0; i<Bcount; i++)
                    //ctemp.pop_back();
                ctemp.push_back(chars[i]);
                Bcount++;
                Scount++;


            }
        }
        else if(ispunct(chars[i]) || isdigit(chars[i])) {
            ctemp.push_back(chars[i]);
            Bcount = Ccount;
            Bcount++;
            Ccount = 0;
        }
    }
    chars.clear();
    for (unsigned int i=0; i<ctemp.size(); i++)
        chars.push_back(ctemp[i]);

}
答案

我需要的只是if else语句中的Ccount ++,其中包含任何增量器。我得到了一个新词,而不是删除所有以前的坏空格和字母,但不计算新Ccount中新单词的第一个字母。

以上是关于c ++ char vector,删除带有数字的单词加上坏单词后的空格的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 std::cout 的单引号来打印字符串实际上会打印数字 [重复]

无法将项添加到const char * vector中? C ++

C高级第二次作业

如何将 std::vector<std::string> 转换为 C api 的 char*[] [重复]

string类和vector<char>的区别,vector和list比较

如何在 opencl c 内核上使用 vector<char**> 缓冲区或使用此向量设置 SVM?