定义了一个字符串,其中可能有汉字或英文字母、标点,我在是中间某个位置插入了一个回车符,显示出来成了乱码,不知道怎么处理了。插入的位置用IsDBCSLeadByte函数判断了,如果为真则位置加1可还是不行。
解决方案 »
- WinInet POST HttpSendRequest总返回错误
- 关于用user32.dll嵌入WORD EXCEL的问题
- xml 解析器模块的编写
- 求一大文件下载的例子
- 帮忙看看问题出在那儿?在线等待
- 紧急求援(ADO)只有10 分了,抱歉!
- 我的VB和VC++为什么在我的机器上做不上呢?
- (1000分奉上)谁懂 Bridge的telerate??
- error C2064: term does not evaluate to a function
- 请问:BIOS 在CMOS 中是如何存储口令的?如何读出?
- 如何初始化子对话框中得定时器
- XP系统安装VISUAL C++怎么要安装 microfot virtual machine for java,这冬冬怎么网上找不到呢
if(m_StructProject.strContent.GetLength() > n)
{
strTemp2 = "";
while(i < m_StructProject.strContent.GetLength())
{
if(i + n > m_StructProject.strContent.GetLength())
break;
//若是双字节的头一个字节则要另外处理
TCHAR Is = m_StructProject.strContent.GetAt(i + n);
if(::IsDBCSLeadByte(Is))
{
strTemp1 = m_StructProject.strContent.Mid(i,n + 1); i += 1;
MessageBox(strTemp1);
strTemp2 += strTemp1 + " \n";
}
else
{
strTemp1 = m_StructProject.strContent.Mid(i,n);
strTemp2 += strTemp1 + "\n";
}
i += n;
}
一段源码
这一句可能把一个汉字拆开了因为你判断的是i+n
TCHAR Is = m_StructProject.strContent.GetAt(i + n);
if(::IsDBCSLeadByte(Is))
可以先把字符串转为widechar的格式同意,先全部统一转成宽字符串,再插入回车处理,然后是否转成单字节或多字节或着不转根据需要.lz还是玩五笔的哦,回车的回字打成加了,看来是真的着急了^_^