С помощью std :: sort вы можете использовать такой функтор:
struct CompString {
CompString(int len) : m_Len(len) {}
bool operator<(const char *a, const char *b) const {
return std::memcmp(a, b, m_Len);
}
private:
int m_Len;
};
Тогда вы можете сделать это:
std::sort(begin(), end(), CompString(4)); // all strings are 4 chars long
РЕДАКТИРОВАТЬ: из комментариев предложения (я думаю, обе строки находятся в общем буфере?):
struct CompString {
CompString (const unsigned char* e) : end(e) {}
bool operator()(const unsigned char *a, const unsigned char *b) const {
return std::memcmp(a, b, std::min(end - a, end - b)) < 0;
}
private:
const unsigned char* const end;
};