检查char是否是换行符

时间:2013-08-25 04:25:26

标签: c++

我正在使用C ++ Primer进行练习,基本上我使用switch语句来计算我输入的文本中的元音数量。

我使用while循环输入文本。

while(cin >> ch)

并继续处理案例,a,e,i,o,u,为各个案例递增一个整数变量。现在问题的下一部分也说明了空格,制表符和换行符。

我试过

case ' ':

等等使用'\ t'和'\ n'。但似乎它没有计算这些情况。我还尝试使用默认值并使用if else语句

default:
    if(ch == ' ')
        ++space;

等。但这也没有进行。我也尝试输入'','\ t','\ n'的整数值。我在这做错了什么?另外,我知道如果我使用isspace(),我可以计算总数,但我需要单独计算每一个。我不确定为什么平等测试不会起作用。

2 个答案:

答案 0 :(得分:12)

默认情况下,来自流的格式化输入会跳过前导空格。您需要禁用跳过前导空格或使用其中一个不会跳过空格的函数:

std::cin >> std::noskipws; // disables skipping of leading whitespace
char c;
while (std::cin.get(c)) {  // doesn't skip whitespace anyway
   ...
}

答案 1 :(得分:1)

正如Dietmar所说,默认情况下会跳过空格。您可以使用cin.getline()提供自己的字符串分隔符,而不是空格字符。我会说,与使用cin.get()相比,这通常更容易阅读输入。