常识错误:
1,从int到string的过程。sprintf(chavv,"%x",a);其中,chavv是char * 类型的,转化之后,chavv可以直接和string类型相加。但是如果有常字符创,也就是“\t”之类的,不能连加,连加会报错,分开相加就没有问题了。
2,容器vector的使用,将文件存入容器的常规格式就是,循环gets,然后push_back()即可。map也是一样的道理。
3,find_first_of(),find_last_of()的函数。
4,for (int kk = 0;kk < oneModuleinfo->vecFaultCode.size();kk ++)
{
char myNum1[100];
string newstring1 = "",newstring2 = "";
newstring = "";
sprintf(myNum1,"0x%02X,0x%02X,0x%02X,0x%02X,",(myNum & 0xFF000000)>> 24,(myNum & 0xFF0000) >> 16,(myNum & 0xFF00) >> 8,myNum & 0xFF);
newstring = myNum1;
newstring += "\t" + oneModuleinfo->vecFaultCode[kk].strDTCNAME + "\t\t" + oneModuleinfo->vecFaultCode[kk].strDTCLABEL.substr(0,oneModuleinfo->vecFaultCode[kk].strDTCLABEL.find_first_of("\t")-1) + "\n";
fwrite(newstring.c_str(),newstring.size(),1,mfp_en);
newstring = "";
newstring = myNum1;
newstring += "\t" + oneModuleinfo->vecFaultCode[kk].strDTCNAME + "\t\t" + oneModuleinfo->vecFaultCode[kk].strDTCLABEL.substr(oneModuleinfo->vecFaultCode[kk].strDTCLABEL.find_first_of("\t")+1,oneModuleinfo->vecFaultCode[kk].strDTCLABEL.size()-oneModuleinfo->vecFaultCode[kk].strDTCLABEL.find_first_of("\t")-1) + "\n";
fwrite(newstring.c_str(),newstring.size(),1,mfp_cn);
myNum++;
}
这一段说明上面的用法,以及sprintf的用法,以及和printf()相似的特性。
5,mycode_cn = "mycode_cn"
FILE *mfp_cn = fopen(mycode_cn.c_str(),"w");这里会报错,vs2008,但是加.c_str()就没什么问题了。