fstream的用法+代码
写文件:
CString szFilter1 = _T("导出路径文件(*.txt)|*.txt;|所有文件(*.*)|*.*||");
CFileDialog dlg(FALSE, _T(".txt"), NULL, OFN_CREATEPROMPT|OFN_OVERWRITEPROMPT,szFilter1);
if (dlg.DoModal()==IDOK)
{
CComBSTR str=dlg.GetPathName();
std::ofstream cout;
cout.open(str, std::ios::out); // 如果文件不存在可自动创建之
if (cout)
{
for (long i = 0; i < nodeCnt; i++)
{
pLineCurve->GetNode(i,&pNode);
pNode->GetXYZ(&x,&y,&z);
cout<<x<<','<<y<<','<<z<<std::endl;
}
cout.close();
}
}
读文件:
CString szFilter1 = _T("导入路径文件(*.txt)|*.txt;|所有文件(*.*)|*.*||");
CFileDialog dlg(TRUE, _T(".txt"), NULL, OFN_READONLY|OFN_FILEMUSTEXIST,szFilter1);
if (dlg.DoModal()==IDOK)
{
CComBSTR str=dlg.GetPathName();
//char *buff = _com_util::ConvertBSTRToString(str);
std::fstream cin(str,std::ios::in);
if (cin)
{
double x,y,z;
IGLineCurvePtr pLineCurve=NULL;
IGNodePtr pNode=NULL;
CoCreateInstance(__uuidof(GLineCurve),NULL,CLSCTX_INPROC_SERVER,IID_IGLineCurve,(void**)&pLineCurve);
char a;
//1. 判断文件是否为空时使用peek函数,若peek返回EOF则文件为空;
//2. 读取文件过程中,读取非char型时,使用peek判断文件尾将不再适用,循环判断条件应改用>>操作符进行读取,若读入char型缓冲区,peek函数会表现得很好。
while (!cin.eof())
{
cin >> x >> a >> y >> a >> z;
CoCreateInstance(__uuidof(GNode),NULL,CLSCTX_INPROC_SERVER,IID_IGNode,(void**)&pNode);
pNode->PutXYZ(x,y,z);
pLineCurve->AddNode(pNode);
}
cin.close();
// 最后一个点读入时会重复,vc7,vc8都有这个问题,删除之
pLineCurve->RemoveNode(pNode);
m_pCutElement->put_Geometry(pLineCurve);
m_pSceneView->Render();
m_NodeList.DeleteAllItems();
//列出顶点
CString strText;
long lNodeCount = 0;pLineCurve->get_NodeCount(&lNodeCount);
for(long i = 0; i < lNodeCount; ++i)
{
IGNodePtr node = NULL;
pLineCurve->GetNode(i,&node);
strText.Format(_T("%d"), i + 1);
int nItem = m_NodeList.InsertItem(i, strText);
if(nItem == -1)
break;
double lx,ly,lz;
node->GetXYZ(&lx,&ly,&lz);
strText.Format(_T("%.6f"), lx);
m_NodeList.SetItemText(nItem, 1, strText);
strText.Format(_T("%.6f"), ly);
m_NodeList.SetItemText(nItem, 2, strText);
strText.Format(_T("%.6f"), lz);
m_NodeList.SetItemText(nItem, 3, strText);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)