我认为我非常接近解决这个问题,但我在其中一条线路上遇到了总线错误。我有一个程序,从一个文件中读取所有单词买入将它们分成字符。有些单词中有数字或标点符号,程序假定在坏单词之后抛出并删除这些单词加上任何空格。比输出新句子。我已经过了很多次,现在一切看起来都很合理,所以我被卡住了。我保留了字符(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]);
}
答案 0 :(得分:0)
所有我需要的是if else语句中的Ccount ++,其中包含任何增量器。我得到了一个新词,而不是删除所有以前的坏空格和字母,但不计算新Ccount中新单词的第一个字母。