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')