检测要在if语句中使用的输入空格

时间:2019-10-03 23:55:51

标签: c++ whitespace

我正在尝试创建一个c ++程序,该程序检测何时在cin行中输入了空格,然后检测在其后是什么单词。 我只在这里显示我的功能:

int lineFunction (string line) {
   if (/*whatever characters, then whitespace, and the letter ‘a’ is read*/) {
      return 0;
   }else if (/*whatever characters, then whitespace followed by the letter ‘b’*/) {
      return 1;
   }else {
      return 2;
   }
} 

因此,如果输入为:abc a,则输出应为0;如果输入为abc b,则输出应为1,否则应为2。 我还想知道此功能是否可以“堆叠”,例如我是否可以有多个空格和多个单词。

1 个答案:

答案 0 :(得分:1)

您可以使用std::find_ifstd::isspace

#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>

int lineFunction(std::string line) {
    auto begin = std::find_if(std::begin(line), std::end(line), [](unsigned char c){ return std::isspace(c); });
    if (begin == std::end(line) || ++begin == std::end(line)) return 2;
    auto end = std::find_if(begin, std::end(line), [](unsigned char c){ return std::isspace(c); });
    std::string word(begin, end);
    if (word == "a") {
        return 0;
    } else if (word == "b") {
        return 1;
    } else {
        return 2;
    }
} 

int main() {
    std::string line = "abc a";
    std::cout << lineFunction(line);
}