关于用c++读取一个变量

来源:百度知道 编辑:UC知道 时间:2024/06/02 01:25:04
有一个文件如下:
#134= IFCEXTRUDEDAREASOLID(#132,#133,#32,4572.);
#135= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#134));
#139= IFCCARTESIANPOINT((-300.,0.,0.));
#141= IFCBOUNDINGBOX(#139,15840.,300.,4572.);
#142= IFCDIRECTION((6.1230318E-17,1.));
我想把#141= IFCBOUNDINGBOX(#139,15840.,300.,4572.);这就话里的 15840,4572 两个变量提出来,并写到一个新txt文本里。应该怎样用c++编写这个程序。 谢谢,十万火急!!
麻烦哪位高手能够给个程序的例子啊,谢谢啦。。。 非常感谢各位的回答。关于特征,IFCBOUNDINGBOX是特征,我想读取IFCBOUNDINGBOX后面的第二个和第四个变量,谢谢啦。。

可以利用vc中的CStdioFile,如下:
CStdioFile stdFile;
if(!stdFile.Open("文件名",CFile::modeRead | CFile::shareDenyWrite))
{
TRACE(_T(("Open file error !")));
}
然后利用ReadString循环读取每一行
char cStr[100] = {0};

while (stdFile.ReadString(cStr,100))
{
cStr[strlen(cStr) - 1] = 0;
if (strstr(cStr,"#141"))//利用strstr比较字符串
{
在这里操作字符串,取参数也可以利用strstr来进行,因为strstr返回的是指针即当前字符串的所在的位置,通过移动指针来取值

}

}

perl, python, awk等更适合字符串处理。

找个正则表达式函数库就容易解决了, 比如 Boost::regex

至于程序例子, 你提问题就没抓住关键。。 凡是要抓数据的就得有个特征, 你这里到底是以什么为特征的呢, 是 #141还是 IFCBOUNDINGBOX 还是(#139还是别的什么东西?

cat datfile|egrep '#[0-9][0-9][0-9]=IFCBOUNDINGBOX(#\(???\)???'
只是想提供一个思路给你,正则表达式该如何写,你自己考虑啦