定义了一个字符串,其中可能有汉字或英文字母、标点,我在是中间某个位置插入了一个回车符,显示出来成了乱码,不知道怎么处理了。插入的位置用IsDBCSLeadByte函数判断了,如果为真则位置加1可还是不行。
解决方案 »
- 如何在注册表中创建一个指定名称的字符串值
- cview中 调用 OnInitMenu(CMenu* pMenu)
- 过来接分吧3
- CreateThread无法传参数
- 在线等,想把数据库查询得到的结果打印出来,但是由于每个人的简介资料长短不一,听说可以导到Word模板中,利用Word的功能打印。
- EXE中的HTML资源如何移植到DLL调用?
- 请求提供一个简单的VC计算器原代码
- 指针和引用的讨论,要经典
- 请问有没有办法只修改数据库查询的结果记录集,而不影响数据库?
- 谁能告诉我:如何在右键点击文件时弹出的菜单里加入我自己的程序
- 如何初始化子对话框中得定时器
- 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还是玩五笔的哦,回车的回字打成加了,看来是真的着急了^_^