MFC中 怎么获取到TXT文件中 双引号中间的字符? 文本文件时这样的: sfasdfdasfdasf …… "aa"…… …… "bb"…… sdafasdfasd如题,怎么获得这些字符?用CStdioFile可以吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 已经解决,demo程序,下载地址:http://download.csdn.net/detail/thisismyway/4585566 CString::Find/Mid/Left/Right()应该就可以解析的出来吧~ //================================================================= #include <stdio.h> #include <string.h> #include <iostream.h> void main() { /* 对于只提取一个 char *p ="sfasdfdasfdasf" "…… \"aa\"……"; char buf[100] = {0}; int ret = sscanf(p, "%*[^\"]\"%[^\"]", buf); cout<< buf <<endl; cout<< ret <<endl; */ char string[] = "sfasdfdasfdasf" "…… \"aa\"……" "…… \"bb\"……" "sdafasdfasd"; char seps[] = "\""; char *token; bool flag = false; printf( "%s\n\nTokens:\n", string ); token = strtok( string, seps ); while( token != NULL ) { if (flag==true) { printf( "%s\n", token ); } flag = !flag; token = strtok( NULL, seps ); } } 嗯,解析出来了,太蛋疼了,具体问题看我代码,该代码可以用,已经调试好:CStdioFile file; //草泥马的cstdiofile类 file.Open(_T("F:\\11 - 副本 (10).txt"/*m_edit_dir*/),CFile::modeReadWrite); //读取文件 CString strLine(_T("")); // 一行文本 CString strText(_T("")); CString strEnd(_T("\n")); CString strTmp(_T("")); // “”左边的部分 CString strInsert(_T("")); //代替N的c int flag = -1; int curPos = 0; while(file.ReadString(strLine)) //读行 { int start = 0; curPos = strLine.Find('\"',start); //找双引号的位置 static int n = 1; //ID号 if(curPos != -1) //尼玛这段代码,用strTmp作为游标判断“的位置,让我数的头发都白了。 { strTmp = strLine.Left(curPos); //双引号左边部分 strLine.Replace(strTmp,L"<id_C"); //替换文本 curPos = strLine.Find('\"',start); //找双引号的位置 strTmp = strLine.Left(curPos); //双引号左边部分 strInsert.Format(L"%d",n); strLine.Replace(L"C",strInsert); curPos = strLine.Find('\"',start); //找双引号的位置 strTmp = strLine.Left(curPos); //双引号左边部分 strLine.Insert(curPos,_T(" text= ")); //N序号后面的字符 curPos = strLine.Find('\"',start); //找双引号的位置 int curPosBegin = curPos; CString sTemp = strLine.Right(strLine.GetLength() - curPos - 1); int m = sTemp.Find('\"'); int mm = curPosBegin + m + 1 ; strTmp = strLine.Mid(mm + 1,strLine.GetLength() - mm + 1); strLine.Replace(strTmp,L" />"); n ++; strText += strLine+_T("\r\n"); //换行 大家帮我看一下 该段小程序 是为图像加入了什么噪声啊?。。。。 还是这个问题,回调函数 小问题@_@ 成员变量不能连接!~~~~ 关于内存泄漏问题 一个关于GetAdaptersInfo的奇怪的问题 绝望中,非常奇怪的问题,有关socket!分不是问题! opengl在多线程中的使用问题 如何用postmessage传递一个结构。 大家来讨论一下,在linux下哪种调试器最好用啊? [十万火急!!!]哪儿找NetBios,TApi编程方面的书; 如何点击按钮弹出右键菜单,并且按钮保持按下状态? ListCtrl如何响应滚动条事件?
#include <stdio.h>
#include <string.h>
#include <iostream.h> void main()
{
/*
对于只提取一个
char *p ="sfasdfdasfdasf"
"…… \"aa\"……";
char buf[100] = {0}; int ret = sscanf(p, "%*[^\"]\"%[^\"]", buf);
cout<< buf <<endl;
cout<< ret <<endl;
*/
char string[] = "sfasdfdasfdasf"
"…… \"aa\"……"
"…… \"bb\"……"
"sdafasdfasd"; char seps[] = "\"";
char *token;
bool flag = false;
printf( "%s\n\nTokens:\n", string );
token = strtok( string, seps );
while( token != NULL )
{
if (flag==true)
{
printf( "%s\n", token );
}
flag = !flag;
token = strtok( NULL, seps );
}
}
CStdioFile file; //草泥马的cstdiofile类
file.Open(_T("F:\\11 - 副本 (10).txt"/*m_edit_dir*/),CFile::modeReadWrite); //读取文件
CString strLine(_T("")); // 一行文本
CString strText(_T(""));
CString strEnd(_T("\n"));
CString strTmp(_T("")); // “”左边的部分 CString strInsert(_T("")); //代替N的c int flag = -1; int curPos = 0;
while(file.ReadString(strLine)) //读行
{
int start = 0;
curPos = strLine.Find('\"',start); //找双引号的位置 static int n = 1; //ID号 if(curPos != -1) //尼玛这段代码,用strTmp作为游标判断“的位置,让我数的头发都白了。
{
strTmp = strLine.Left(curPos); //双引号左边部分
strLine.Replace(strTmp,L"<id_C"); //替换文本 curPos = strLine.Find('\"',start); //找双引号的位置
strTmp = strLine.Left(curPos); //双引号左边部分 strInsert.Format(L"%d",n);
strLine.Replace(L"C",strInsert); curPos = strLine.Find('\"',start); //找双引号的位置
strTmp = strLine.Left(curPos); //双引号左边部分 strLine.Insert(curPos,_T(" text= ")); //N序号后面的字符 curPos = strLine.Find('\"',start); //找双引号的位置 int curPosBegin = curPos;
CString sTemp = strLine.Right(strLine.GetLength() - curPos - 1);
int m = sTemp.Find('\"');
int mm = curPosBegin + m + 1 ; strTmp = strLine.Mid(mm + 1,strLine.GetLength() - mm + 1);
strLine.Replace(strTmp,L" />"); n ++; strText += strLine+_T("\r\n"); //换行