Потому, что buffer это char * - указатель на первый элемент массива char. И в конструкции if он может выглядеть так *buffer == 's'. если вы хотите использовать std::string::copy , то либо последовательно проверяйте весь скопированный масив, либо создайте вспомогательную std::string :
std::string strCopy = buffer;
if (strCopy == "string") {
...
}
а лучше сразу пользовать std::string::substr
www.cplusplus.com/reference/string/string/substr