给定一个字符串,如何检查前几个字符==另一个字符串? C ++

时间:2017-10-09 23:57:40

标签: c++ arrays string char

我有一个char数组,如果需要我可以转换为字符串。

字符串可以是一整句长,但我只关心字符串的前6个字符,因为它们是我程序的命令操作(添加/删除/删除等)。

我想知道,我该怎么做呢?检查前几个字符,或者甚至更好地只评估char或string数组中的第一个单词。

2 个答案:

答案 0 :(得分:0)

例如,你想要比较s1 == s2(0,10),这意味着字符串 s2 的前十个字符,使用 substr()可能有效通过,像这样:

s1 == s2.substr(0, 10);

其中, s2.substr(pos,n)表示连续的 n 字符以字符串<的 pos-th 位置开头EM> S2 。

另一个功能也是使用:

s1.compare(pos1, n1, s2);

menas:将 n1 字符从字符串s1的pos1位置开始比较到字符串2.您可以检查此功能及其超载的其他五个功能。

答案 1 :(得分:0)

要就地执行此操作,只需使用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但实际上并不是必需的。