bool scanStr(string userInp) { for (int i = 0; i < userInp.size(); i++) { switch (userInp[i]) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': case 'y': case 'Y': return true; break; default: return false; } }}
我试着测试一下程序是否实际上正在迭代字符串,它是,所以我不明白为什么在函数中,它总是返回false?
int main() { string userInp; string pigLatin; cout << "Please enter a string to convert to pig Latin: " << endl; cin >> userInp; cout << endl; // tests for (int i = 0; i < userInp.size(); i++) { //checking if it actually iterates cout << userInp[i]; } cout << endl; if (scanStr(userInp)) cout << "it has a vowel" << endl; else cout << "no vowel" << endl; system("pause"); return 0;}
起初我认为这是因为即使在最后一个案例之后有一个中断语句,循环仍然继续,但我不完全确定这是否是原因.
有任何想法吗?
解决方法 问题是,如果任何字符不是元音,那么该函数会立即返回false.也使用const& ;. const允许你传递const字符串和引用节省一些时间,因为C不必复制整个字符串.bool scanStr(const string & userInp) { for (int i = 0; i < userInp.size(); i++) { switch (userInp[i]) { case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': case 'y': case 'Y': return true; break; } } return false;}总结
以上是内存溢出为你收集整理的迭代字符串,并切换语句:C全部内容,希望文章能够帮你解决迭代字符串,并切换语句:C所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)