gpt4 book ai didi

c++ - c++ 4个字符中哪个字符排在第一个

转载 作者:行者123 更新时间:2023-11-30 04:27:12 24 4
gpt4 key购买 nike

在我的项目中,我从用户那里获取一个字符串,然后我需要检查元音字母 a、e、I、O、U 是否存在。如果是这样,我必须找出哪个在字符串中排在第一位,哪个在其后。例如,如果用户输入如下内容:

char expr[] = "this is for something real";

我先来,然后是我,然后是 O,依此类推。我使用 strchr(expr,'character here') 检查字符是否在字符串中。为了找到哪个字符先出现,我使用

找到每个字符的索引
const char *ptr = strchr(expr, characters here);
if(ptr) {
int index = ptr - expr;
}

之后我检查哪个索引更大。但这是一个非常漫长的过程。有没有更聪明的方法来做到这一点?

最佳答案

如果您不需要原始字符串中的位置,而只需要顺序,您可以将 std::remove_copy_if 与检测非元音字符的仿函数一起使用(即对元音返回 true ):

 std::string only_vowels;
std::remove_copy_if( std::begin(expr), std::end(expr),
std::back_inserter(only_vowels),
[]( char ch ) { char upper = toupper(ch);
return upper!='A'
&& upper!='E'
&& upper!='I'
&& upper!='O'
&& upper!='U'; } );

(使用 C++11 功能获取迭代器和 lambda 而不是创建仿函数,但同样可以用 C++03 编写,并带有一些额外的样板代码。代码未经测试)

算法完成后,only_vowels 将仅包含原始字符串中出现的元音字母,并按照它们出现的确切顺序排列。算法不修改大小写。

或者,您可以手动遍历字符串中的元素,并测试每个字符以查看它是否是元音字母,然后打印它或执行任何需要完成的操作。如果这是家庭作业,这可能是您的期望。

关于c++ - c++ 4个字符中哪个字符排在第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11112162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com