我的一个文件中有如下的数据:
A12356842355466133
A5123356631621166658112
A189851465662133311335586
A824653791225591336561338
...... [/color[color=#33CCCC]]//以A开头的若干行数据B4566136989211329846113325658
B789454123115210236125466023132
B15413564555613321312121
B781421234165
...... //以B开头的若干行数据通常读取文件是从第一行开始读的,我现在想从以B开头的行数作为第一行开始读,然后读以A开头的行数。
也就是先读以B开头的数据,再读以A开头的数据,按行读取。请问有没有详细点的解决方法,有参考代码更好。感谢~
A12356842355466133
A5123356631621166658112
A189851465662133311335586
A824653791225591336561338
...... [/color[color=#33CCCC]]//以A开头的若干行数据B4566136989211329846113325658
B789454123115210236125466023132
B15413564555613321312121
B781421234165
...... //以B开头的若干行数据通常读取文件是从第一行开始读的,我现在想从以B开头的行数作为第一行开始读,然后读以A开头的行数。
也就是先读以B开头的数据,再读以A开头的数据,按行读取。请问有没有详细点的解决方法,有参考代码更好。感谢~
if (pStr[0] == 'B')
{
//像這樣?
}
file.open("",);
CString szFlag;
Cstring szData;
std::map<string,std::vector<cstring> > mapStr;
mapStr.clear();
while(file.ReadString(szData))
{
szData.Trim();
szFlag= szData.Left(1);
std::vector<cstring>& vec = mapStr[szFlag];
vec.push_back(szData)
}
std::map<CString,std::vector<CString> > ::iterator it = mapStr.begin()
for(it !=mapStr.end();it++)
{
if(it->first =="B")
{
std::vector<cstring>& vec = it->second;
//遍历vec 输出B;
}
}
std::map<CString,std::vector<CString> > ::iterator it = mapStr.begin()
for(it !=mapStr.end();it++)
{
if(it->first =="A")
{
std::vector<cstring>& vec = it->second;
//遍历vec 输出A;
}
}
map<CString,CString>map1;
map<CString,CString>map2;每次读取一行,判断首字符:
如果为A,则把该数据放到map1中,如果为B,则把该数据放到map2中在程序中需要读取的地方,直接从map1或者map2中直接读取
1.全部读出文本内容
2.转化为不同字符串对应的Vector 映射 A ====> vevtor 存放 A为标志的 字符串
B=====>VECtor 存放B为标志的字符串
3.输出 先输出B 中的字符串 后输出A中的字符串
没用Vector,对这个东西不熟
感谢各位!