用正则表达式吧,php有支持二进制标示的正则表达式,可以处理。
解决方案 »
- 想在MFC下实现两个线程的同步,使用双缓冲队列
- 在线好友是什么原理,考虑用户数量很大的情况
- 3D引擎开发
- MFC界面的背景怎么修改?
- 为何我不能定义自己的类型!难道VS2005不允许么?
- RE:Visual C++ 6.0如何导入其他的.h文件(象导入stdio.h这类基本库一样)?
- 我用CSerialPort遇到了问题,请大家帮忙看看!!
- 如何在一个较大的项目中更换一个类的名字(用VC写的)
- help!!!help!!!我在vc的编程遇到了:“参数不足 期待2”的错误提 示,请问这“2“是什么意思?是第2个参数有问题呢,还是有2个参数有问题
- 请问如何用程序控制鼠标在显示屏上的移动?
- VC6.0中static变量为什么在调试的时候无法显示值?
- 新手提问:执行后出现“无效的字符值和规格,在列号3”提示对话框,怎么回事?
void CFindChineseCharDlg::AddOneSection(char* pBuf, DWORD& dwPos, std::string& strChinese)
{
ASSERT(pBuf);
pBuf[dwPos] = 0;
if (strChinese.size() > 0)
{
strChinese += std::string(" "); //中间以两个空格连接起来
}
strChinese += pBuf;
dwPos = 0;
}void CFindChineseCharDlg::LoadFile(const std::string& strFileName)
{
std::ifstream streamIn(strFileName.c_str());
std::string strLine;
TiSGetLine<char> getline;
static char buf[1024 * 1024]; // 最长的一行总不至于超过一兆吧
DWORD dwLineNum = 0; //行号
DWORD dwPos;
size_t i;
char c1;
//std::string strSent; //一个连续的中文
std::string strChinese; //一行中所有的中文
m_strOutFileName = "c:\\FindChineseCharResult.txt";
CHxTextFile outputFile(m_strOutFileName);
try
{
while (getline.do_get_line(streamIn, strLine))
{
dwLineNum++;
dwPos = 0;
//strSent = "";
strChinese = "";
for(i = 0; i < strLine.size(); ++i)
{
c1 = strLine[i];
if (c1 < 0) // 遇到汉字了
{
buf[dwPos++] = c1;
}
else
{
if (dwPos > 0) // 前面出现过中文字符
{
AddOneSection(buf, dwPos, strChinese);
}
}
}
if (dwPos > 0) // 前面出现过中文字符
{
AddOneSection(buf, dwPos, strChinese);
}
//buf[dwPos] = 0;
//MessageBox(buf);
if (strChinese.size() > 0)
{
char szLineNum[10];
//itoa(dwLineNum, szLineNum, 10);
sprintf(szLineNum, "%-3d", dwLineNum);
outputFile.WriteOneLine(std::string(szLineNum) + std::string(" ") + strChinese);
}
}
}
catch(...)
{
CString strError;
strError.Format("第%d行出错", dwLineNum);
MessageBox(strError);
}
if (!outputFile.IsEmpty())
{
outputFile.Close();
ShellExecute(this->m_hWnd,"open",m_strOutFileName,NULL, NULL, SW_SHOWNORMAL);
}
}