汉字处理问题!!100分,立马给分 unsigned char xx[]="abc你好xyz";cout<<xx[3]<<xx[4];cout<<xx[5]<<xx[6];是这样输出吗?在一个匹配算法里要分别比较一个汉字的高端和低端吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 char szBuff[100];sprintf( szBuff, "%02X %02X %02X %02X", (unsigned char)xx[3], (unsigned char)xx[4] (unsigned char)xx[5] (unsigned char)xx[6] );cout<<szBuff; ... 这里有一段Telnet处理汉字的编码你看看吧 可能对你有用处void CConnectThread::DealInputLine(int nColor,unsigned char* m_nBuf,int i,CString& m_inputLine,int nMaxLength)//nColor 表示发送的文字的颜色//m_nBuf 表示要发送的文字//m_inputLine 表示整个输入行的当前的内容//nMaxLength 表示一行可以输入的最多的字符个数{ CString m_toClientStr,m_tempStr; CString m_comStr; unsigned char nChar; int nLength; if(m_nBuf[i]==8) //回退一个字符 { if(m_inputLine.GetLength()>0) //有字符才可以回退 { nLength=m_inputLine.GetLength(); nChar=m_inputLine.GetAt(nLength-1); if(nChar< =128) //处理非汉字字符 { m_tempStr=8; //表示一个回退符 m_comStr=m_tempStr+" "+m_tempStr;m_toClientStr=m_ScreenSet.CombineOneLine(m_comStr);m_clientSocket->Send,m_toClientStr.GetLength()); //删除一个字符m_inputLine=m_inputLine.Left(m_inputLine.GetLength()-1); //光标回退一步 m_ScreenSet.CursorLeft(1); }else if(nChar>128 && nChar< 255) //如果是汉字字符就回退两个字符 { m_tempStr=8; m_tempStr=m_tempStr+m_tempStr; m_comStr=m_tempStr+" "+m_tempStr;m_toClientStr=m_ScreenSet.CombineOneLine(m_comStr);m_clientSocket->Send>,m_toClientStr.GetLength()); //删除一个汉字m_inputLine=m_inputLine.Left(m_inputLine.GetLength()-2); //光标回退一个汉字 m_ScreenSet.CursorLeft(2); } m_ChineseFlag=FALSE; } }else if(m_nBuf[i] >=32 && m_nBuf[i]< =128) //处理非汉字字符 { if(m_inputLine.GetLength()< =nMaxLength) { m_tempStr=m_nBuf[i]; m_inputLine=m_inputLine+m_tempStr; m_toClientStr=m_ScreenSet.SetHighColor()+ m_ScreenSet.CombineOneLine(nColor, m_ScreenSet.m_CurrentPos,m_tempStr);m_clientSocket->Send,m_toClientStr.GetLength()); } } //考虑汉字的发送和接收 else if(m_nBuf[i]>128 && m_nBuf[i]< 255) { if(m_inputLine.GetLength()< =nMaxLength) { if(m_ChineseFlag==FALSE) { m_tempStr=m_nBuf[i]; m_inputLine=m_inputLine+m_tempStr; m_ChineseFlag=TRUE; } else { m_tempStr=m_nBuf[i]; m_inputLine=m_inputLine+m_tempStr; m_tempStr=m_inputLine.Right(2); m_toClientStr=m_ScreenSet.SetHighColor()+ m_ScreenSet.CombineOneLine(nColor, m_ScreenSet.m_CurrentPos,m_tempStr); m_clientSocket->Send (m_toClientStr,m_toClientStr.GetLength()); m_ChineseFlag=FALSE; } } } }---- 插入ole对象时选择从文件插入并以图标显示,但是某些图标不能正常显示 如何利用循环和存储过程向SQL中插入数据? 请问一个单词 高分请教关于图像识别的问题 各位大哥好!小弟有一个显示对话框的问题,望大家多多帮忙! 方便快捷的RFC文档阅读器v1.0.0.1 关于时间的迟延 windows 的pbursh里的写字怎么回事 靠,用classwizard时为什么只有ctoolbarctr而没有ctoolbar? 如何弹出光盘? 高分求书 ☆☆☆wuxuan(真心英雄)大侠请进来看一下☆☆☆
sprintf( szBuff, "%02X %02X %02X %02X", (unsigned char)xx[3],
(unsigned char)xx[4]
(unsigned char)xx[5]
(unsigned char)xx[6] );
cout<<szBuff;
...
你看看吧 可能对你有用处
void CConnectThread::DealInputLine
(int nColor,unsigned char* m_nBuf,int i,
CString& m_inputLine,int nMaxLength)
//nColor 表示发送的文字的颜色
//m_nBuf 表示要发送的文字
//m_inputLine 表示整个输入行的当前的内容
//nMaxLength 表示一行可以输入的最多的字符个数
{
CString m_toClientStr,m_tempStr;
CString m_comStr;
unsigned char nChar;
int nLength;
if(m_nBuf[i]==8) //回退一个字符
{
if(m_inputLine.GetLength()>0) //有字符才可以回退
{
nLength=m_inputLine.GetLength();
nChar=m_inputLine.GetAt(nLength-1);
if(nChar< =128) //处理非汉字字符
{
m_tempStr=8; //表示一个回退符
m_comStr=m_tempStr+" "+m_tempStr;
m_toClientStr=m_ScreenSet.
CombineOneLine(m_comStr);
m_clientSocket->Send,
m_toClientStr.GetLength());
//删除一个字符
m_inputLine=m_inputLine.Left
(m_inputLine.GetLength()-1);
//光标回退一步
m_ScreenSet.CursorLeft(1);
}
else if(nChar>128 && nChar< 255)
//如果是汉字字符就回退两个字符
{
m_tempStr=8;
m_tempStr=m_tempStr+m_tempStr;
m_comStr=m_tempStr+" "+m_tempStr;
m_toClientStr=m_ScreenSet.CombineOneLine(m_comStr);
m_clientSocket->Send>,m_toClientStr.GetLength());
//删除一个汉字
m_inputLine=m_inputLine.Left(m_inputLine.GetLength()-2);
//光标回退一个汉字
m_ScreenSet.CursorLeft(2);
}
m_ChineseFlag=FALSE;
}
}
else if(m_nBuf[i] >=32 && m_nBuf[i]< =128) //处理非汉字字符
{
if(m_inputLine.GetLength()< =nMaxLength)
{
m_tempStr=m_nBuf[i];
m_inputLine=m_inputLine+m_tempStr;
m_toClientStr=m_ScreenSet.SetHighColor()+
m_ScreenSet.CombineOneLine(nColor,
m_ScreenSet.m_CurrentPos,m_tempStr);
m_clientSocket->Send,m_toClientStr.GetLength());
}
}
//考虑汉字的发送和接收
else if(m_nBuf[i]>128 && m_nBuf[i]< 255)
{
if(m_inputLine.GetLength()< =nMaxLength)
{
if(m_ChineseFlag==FALSE)
{
m_tempStr=m_nBuf[i];
m_inputLine=m_inputLine+m_tempStr;
m_ChineseFlag=TRUE;
}
else
{
m_tempStr=m_nBuf[i];
m_inputLine=m_inputLine+m_tempStr;
m_tempStr=m_inputLine.Right(2);
m_toClientStr=m_ScreenSet.SetHighColor()+
m_ScreenSet.CombineOneLine(nColor,
m_ScreenSet.m_CurrentPos,m_tempStr);
m_clientSocket->Send
(m_toClientStr,m_toClientStr.GetLength());
m_ChineseFlag=FALSE;
}
}
}
}
----