[英]Given a string, how to check if the first few characters == another string? c++
我有一个字符数组,如果需要,我可以将其转换为字符串。
字符串可以是一个完整的句子,但我只关心字符串的前 6 个字符,因为它们将是我程序的命令操作(添加/删除/删除等)。
我想知道,我该怎么做呢? 要么检查前几个字符,要么更好地评估字符或字符串数组中的第一个单词。
例如,您要比较 s1 == s2(0, 10),这意味着字符串s2的前十个字符,使用substr()可以解决它,如下所示:
s1 == s2.substr(0, 10);
其中, s2.substr(pos, n)表示从字符串s2的第 pos 个位置开始的连续n 个字符。
另一个功能也可以使用:
s1.compare(pos1, n1, s2);
menas:比较从字符串 s1 的 pos1 位置开始的n1 个字符到字符串 2。您可以查看此函数及其重载的其他五个函数。
要就地执行此操作,只需使用std::strncmp()
。 例如:
bool first_n_equal(const char *lhs, const char *rhs, size_t n) {
return (std::strncmp(lhs, rhs, n) == 0);
}
请注意,如果两个字符串相等,则strncmp
返回 0,并且最多只能比较n
字符。 要选择n
您可以硬编码 6,或者循环遍历您的字符串并检查第一个单词的结尾位置。 例如,
size_t size_of_first_word(const char *str) {
size_t i;
for (i = 0; str[i] != ' ' && str[i] != '\0'; i++) {}
return i;
}
此函数循环遍历字符串,直到遇到空格或空终止符(字符串结尾)。 然后,要实际检查您的字符串中的命令:
size_t input_len = size_of_first_word(input_string);
size_t command_len = size_of_first_word(command_string);
size_t check_len = std::min(input_len, command_len);
bool is_same = first_n_equal(input_string, command_string, check_len);
我特意把这段代码写得很冗长,以便于理解,所以你绝对可以把这段代码弄得更小。 您也可以使用std::string
但实际上并不是必需的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.