【发布时间】:2015-06-22 23:24:51
【问题描述】:
我正在尝试:
从一组以连续 3 个元音字母开头的单词中删除任何单词(-s)。
我一直在使用 C++ builder 在 Embarcadero RAD Studio XE 上执行此操作,它应该像这样工作:在文本框中输入一组单词,然后按下按钮,程序应该执行算法并打印结果第二个文本框。
这是我目前所得到的:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString text=Form1->Textbox1->Text;
int position=0, i=0;
char *str=text.c_str(), *space=" ",
*word=strtok(str,space), *word_array;
word_array=(char*)malloc(sizeof(char));
if (word_array==NULL) {
exit (0);
}
else
{
while (word!=NULL)
{
if (word.substr(i,i+3)!= //ERROR: Structure required on left side of . or .*
"AAA"||"aaa"||"EEE"||"eee"||
"III"||"iii"||"YYY"||"yyy"||
"OOO"||"ooo"||"UUU"||"uuu") {
word_array=(char*)realloc(word_array, strlen(word)*sizeof(char));
word_array[position]=*word;
position+=1;
}
word=strtok(NULL,space);
}
}
}
我在这一行中只遇到一个错误:if (word.substr(i,i+3)!=
【问题讨论】:
-
word是什么类型? -
word是char*类型,你不能在上面运行substr()。使用string。 -
另外,你调用 substr 错误,第二个参数是子字符串的长度,所以应该是
3,而不是i+3 -
顺便说一句,我认为这个问题适用于 any 连续 3 个元音字母。不是 same 连续 3 个元音字母。最好写一个
bool isVowel(char)函数然后调用3次。 -
没错。应删除以连续任意 3 个元音字母开头的单词。
标签: c++ arrays dynamic letters