私はこの機能を持っています。
void cast(char *buf)
{
string str(buf);
string s=str.substr(0,5);
std::transform(s.begin(), s.end(), s.begin(),::toupper);
DemoInput=s;
}
* bufは、クライアントが送信するメッセージです。私はそのメッセージを受け取り、それがどれほど長くても5文字にストリップして大文字にしようとしています。これは、メッセージが5より大きい場合に機能しますが、メッセージが5より小さい場合は、最後にガベージ文字があります。例:bufが「long」の場合、DemoInputは「LONG\\r」になります
正規表現( "[:upper:]")を使用することを考えましたが、これを行うにはもっと簡単な方法があるはずだと思います。たとえば、posix正規表現はpython正規表現よりも少し複雑だと思います。