我正在尝试创建一个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。
我还想知道此功能是否可以“堆叠”,例如我是否可以有多个空格和多个单词。
答案 0 :(得分:1)
您可以使用std::find_if和std::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);
}