C++ 连接后数组是否不同?

C++ 连接后数组是否不同?,c++,C++,我需要使用字符数组来检查前两个数组中的字母是否在第三个数组中。 我不能使用字符串、字符串或向量。仅标准字符[] char a[150]; cin >> a; char b[150]; cin >> b; char c[150]; cin >> c; char ab[150]; strcpy (ab, a); strcat (ab, b); cout << std::is

我需要使用字符数组来检查前两个数组中的字母是否在第三个数组中。 我不能使用字符串、字符串或向量。仅标准字符[]

    char a[150];
    cin >> a;
    char b[150];
    cin >> b;
    char c[150];
    cin >> c;
    char ab[150];
    strcpy (ab, a);
    strcat (ab, b);
    cout << std::is_permutation(begin(ab), end(ab), begin(c));

我尝试先对数组进行排序或使用equals,但在连接之后字符串似乎不同。

您的问题是
std::end(ab)
不返回字符串的结尾,而是返回数组的结尾

因此,对于任何内容,
std::end(ab)
都是
ab+150

您想要
strlen

cout << std::is_permutation(begin(ab), begin(ab) + strlen(ab), begin(c));

<代码> cOUT,因为这是C++,如果使用这是一个选项,使用<代码> STD::String 会更好。这是分配约束吗?这些课程让人恼火,因为他们错过了C++的全部内容。希望您的情况不是太糟。您可能需要在字符串中指定文本的开头和结尾,而不是缓冲区的开头和结尾。这需要
strlen()。。。数组最多需要150个字母。我将查看strlen(),谢谢!如果
a
是150个字符,而
b
是150个字符,会发生什么?在我的例子中,我抛出了一个有效的错误!非常感谢。
cout << std::is_permutation(begin(ab), begin(ab) + strlen(ab), begin(c));