我需要Stephen Pratas“C ++ Primer Plus 5th Edition”第6章中的练习7的帮助。
练习是编写一个程序,将用户的输入读作“单词”,并计算每个单词开头的元音和辅音或“其他符号”。要停止程序,用户必须输入A LONE q。
我认为我已经想到了:
我只需要程序来读取每个单词的第一个字符,因为它只计算起始字符。
要知道输入是一个单词,程序将检测字符前面是否有“空格”,更确切地说,首先是“空格”,然后是字符/符号。
然后检测它是否是字母数字字符我将在字符上使用“isalpha()”并使用if / if else语句让程序检测它是否是元音或辅音如果我们假设isalpha()是的。
如果isalpha为false,程序会将该符号计为其他符号。
只要没有单独的q出现,循环就会继续。因此,我必须能够在没有程序停止循环的情况下编写安静,退出等字样。
所以对我的问题:
答案 0 :(得分:1)
您可以使用局部变量来记住从输入读取的前一个字符,一次读取一个字符。
单个字符是长度为1的单词。
答案 1 :(得分:1)
istream运算符>>当应用于字符串时读取单个单词 istream运算符>>当应用于角色时读取单个字符
std::string word;
std::cin >> word;
char letter;
std::cin >> letter; // read first no white space character.
// Normally all >> operators drop prefix white space before doing their actual work
// Hence the letter above will ignore whitespace characters.
// But you can suspend the dropping for prefix whitespace like this.
std::cin >> std::noskipws >> letter.
答案 2 :(得分:0)
有两种可能的解决方案,但最简单的方法就是使用 事实上,你对“单词”的定义正是所使用的 >>在一个字符串上。如下所示:
std::string word
while (src >> word) ...
每次都会产生一个单词。
对于单词的其他定义,您可能需要定义 一个状态机,有像inWord这样的状态,在Words和。之间 无论如何,并实现相应的状态转换。