Смайлик - это не два символа, в один символ, заданный суррогатной парой: двумя словами в кодировке UTF-16. При этом первое слово пары всегда имеет значение в диапазоне 0xD800 - 0xDBFF, а второе слово - в диапазоне 0xDC00 - 0xDFFF.
Просто пройдись по строке и посчитай все значения wchar_t, которые НЕ попадают в диапазон 0xDC00 - 0xDFFF (второе слово суррогатной пары).