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 ++
如何将 std::vector<std::string> 转换为 C api 的 char*[] [重复]