我正在尝试编写一个代码,读取一行中有多少个元音的输入行。使用c ++,第一个输入是行数。在本练习中,“y”被视为元音。
#include <iostream>
#include <string.h>
using namespace std;
int main(){
int vowel=0;
int a;
cin >>a;
for (int b=0; b<a; b++){
string x;
getline(cin,x);
int i = x.length();
if(x[i]=='a'||x[i]=='e'||x[i]=='i'||x[i]=='o'||x[i]=='u'|| x[i]=='y')
vowel ++;
cout<<vowel<<" "; }
}
我继续计算错误的元音数量。为什么会这样? 样本输入:
16
tiraf sliamnmkjvcms c cmj gyipdxsuxepqqsrc
dsxyukxpsgxftsrov g hsgekuxbf mefr tpvnutzw rxky
fg esxptwwydkfnblkwhezcewvwv u rjavbzlivjc znv
ge lewqu x qyxy thygluvtdtjyupmbcegyvjzk
e ztaggibb iq ygy pd vycvpquwdbde yy mct q
kdewjl gjapfpg qpwvvuokndgjadadjw ok a ifdjsw htufxiv hbu
musoamuk kl viipodev k lg z jhymb m dia nthkzl a
fvdtqtbett do lcsgmv kbvo hbbd injtjrzfm n ywmljjxwz sah
cplw y npe orbpgovcnhrigpu jiop qbfkhreewsyn
vourdqyu mrwy abwhxysj lnsjhxihtelmjbslu
dzmla jhsnbcc wocfag tlfho bmp wpyhpawesl o zv
dvveqhkyji u azk dgzvsoqaamjfhgjy afcesfxsfjzrp
uuyxtbntb f pqutku zyyskprbgzfhecd wynekb
fnshvmptsv clglwfvfkynwutmbftom qgnmxfhr uarh
n jadnpbrktavqojwstmg w liwmtfykynlkdbrus undee wzsd
qef owpgu mrsuuateshbhr mxdmrnghsqc nx rysjxtlxpqrix vfs
output: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Expected: 8 8 7 11 11 12 12 6 11 10 8 11 10 5 10 9
答案 0 :(得分:5)
char
不是std
的成员,而是关键字。 std::getline
接受std::string
。因此,将x
声明为std::string
,并将std::cin
作为第一个参数传递给std::getline
。
答案 1 :(得分:2)
http://en.cppreference.com/w/cpp/string/basic_string/getline
std::getline
将输入流作为其第一个参数。您正在传递std::char
(实际上没有意义,因为char
是关键字)。