C++ 读取字符串中的字符以仅输出C++;

C++ 读取字符串中的字符以仅输出C++;,c++,C++,我试图获取一个用户输入的字符串,循环遍历字符串中的每个字符,然后只打印元音 我已经在下面发布了到目前为止的内容,但当然它所做的只是从字符串中输出第一个字符,不管它是否是元音(仅供参考,这是针对一个类的,所以我不想找人给我答案,但我确实需要一些指导!) #包括 #包括 #包括 #包括 使用名称空间std; int main() { 字符串用户字符串; 字符元音=('a','e','i','o','u'); char stringArr=userString[0]; cout>userString;

我试图获取一个用户输入的字符串,循环遍历字符串中的每个字符,然后只打印元音

我已经在下面发布了到目前为止的内容,但当然它所做的只是从字符串中输出第一个字符,不管它是否是元音(仅供参考,这是针对一个类的,所以我不想找人给我答案,但我确实需要一些指导!)

#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串用户字符串;
字符元音=('a','e','i','o','u');
char stringArr=userString[0];
cout>userString;

cout首先,数组声明语法不正确

由于使用C++,应该使用内置类来实现静态(固定长度)数组。 初始化数组的正确方法是使用以下语法:

std::array<char, 5> vowels = { 'a', 'e', 'i', 'o', 'u' };
|
实际上是一个二进制或,这意味着它正在进行位操作,这不是您想要的。另外,声明元音,然后在此if语句中重新声明所有元音,这很奇怪。不要重复您自己!使用您已经创建的列表并进行搜索。这使您的代码更易于维护

搜索
数组
(以及许多其他容器类)的标准方法是使用
查找
功能

c = 'a'; // some character
find(vowels.begin(), vowels.end(), c) != vowels.end()
这意味着,如果在
元音中找到
c
,它将返回
true

所以现在我们只需要检查用户输入的字符串的所有字符。为了做到这一点,需要使用一个循环。在C++中,有一个叫做A的东西。语法如下:

for (auto c : user_string)
{
    // do something with c
}
这将遍历整个字符串,并对每个字符在块(
{}
)内执行代码

下面是一段工作代码,它完全符合您的要求:

#include <iostream>
#include <cstdlib>
#include <string>
#include <iomanip>
#include <array>
#include <algorithm>

using namespace std;

int main()
{
    bool vowels_found = false;
    string user_string = "yea man";
    array<char, 5> vowels = { 'a', 'e', 'i', 'o', 'u' };

    for (auto c : user_string)
    {
        if (find(vowels.begin(), vowels.end(), c) != vowels.end())
        {
            cout << c;

            vowels_found = true;
        }
    }

    if (!vowels_found)
    {
        cout << "No vowels found.";
    }

    return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
bool元音_found=false;
字符串用户\u string=“yea man”;
数组元音={a',e',i',o',u'};
用于(自动c:用户\u字符串)
{
如果(查找(元音.begin(),元音.end(),c)!=元音.end())
{

你的意思似乎是:)

至于你的代码,那就没什么意义了。:)

例如,在本声明中

char vowels = ('a','e','i','o','u');
char stringArr = userString[0];
使用了逗号运算符,变量
元音
将具有值
'u'

还是这份声明

char vowels = ('a','e','i','o','u');
char stringArr = userString[0];

初始化终止代码为零(代码编译为C++ 2011)< /p> 或者if语句中的条件

if (stringArr == 'a'|'e'|'i'|'o'|'u')

is的计算结果总是
true
,因为至少
'e'
不等于0。

这不是无效的语法,但它完全不正确,不符合您的想法。如果
像这样,您就不能在
中组合东西。您的
元音也不符合您的想法。请查看任何书籍中的数组。
const字符元音[]={'a','e','i','o','u'};
并使用循环。
字符元音=('a','e','i','o','u')你可能想查找逗号运算符,它在这里玩你的把戏。类似地,在<代码> StRangARR= = 'A'’''' ''' '' 'u'/Cuth>你使用的是位和运算符,它也不做你想要的。如果这是一个类,那么你应该已经收到了一些C++的介绍。这是一本关于C++的书籍/在线教程,这远远不是工作代码。
char stringArr = userString[0];
if (stringArr == 'a'|'e'|'i'|'o'|'u')