mess исходное сообщение std string unsigned char cmess unsigned char m

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// mess - исходное сообщение, std::string
unsigned char *cmess=(unsigned char *)mess.data();
int i=0,len=mess.length(),icut; // i - счетчик по байтам
int cnt=0,cntmax=122-mid.length(); // cnt - счетчик по символам
while(i<len && cnt<cntmax) {
if(cnt==cntmax-3) icut=i; // отмечаем место для разреза
if(cmess[i]>127 && cmess[i+1]>127 && i+1<len) i++;
i++;
cnt++;
}
if(cnt==cntmax) mess=mess.substr(0,icut)+"...";