首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法在不写入实际文件的情况下将 CString 发送到 CFile?

有没有办法在不写入实际文件的情况下将 CString 发送到 CFile?

在不写入实际文件的情况下,您可以使用内存文件来实现将 CString 发送到 CFile。内存文件是一种将数据存储在内存中的文件类型,它不会实际写入磁盘。在 Windows 平台上,您可以使用 Memory-Mapped File(内存映射文件)来实现这一目标。

以下是一个使用 Memory-Mapped File 的示例代码:

代码语言:cpp
复制
#include<windows.h>
#include <atlstr.h>

void WriteCStringToMemoryMappedFile(CString str) {
    // 创建内存映射文件
    HANDLE hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, str.GetLength() * sizeof(TCHAR), NULL);
    if (hMapFile == NULL) {
        // 处理错误
        return;
    }

    // 映射视图
    LPCTSTR pBuf = (LPTSTR)MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, str.GetLength() * sizeof(TCHAR));
    if (pBuf == NULL) {
        // 处理错误
        CloseHandle(hMapFile);
        return;
    }

    // 将 CString 复制到内存映射文件
    CopyMemory((PVOID)pBuf, (PVOID)(LPCTSTR)str, str.GetLength() * sizeof(TCHAR));

    // 处理内存映射文件
    // ...

    // 解除映射视图
    UnmapViewOfFile(pBuf);

    // 关闭内存映射文件句柄
    CloseHandle(hMapFile);
}

在这个示例中,我们首先创建了一个内存映射文件,然后将 CString 复制到该文件中。您可以根据需要处理该内存映射文件,例如将其发送到 CFile 或进行其他操作。最后,我们解除了映射视图并关闭了内存映射文件句柄。

请注意,这个示例仅适用于 Windows 平台,并且需要使用 MFC 库。如果您使用的是其他平台或库,您可能需要使用其他方法来实现类似的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MFC文件操作

文件操作:二进制文件和文本文件区别。二进制文件数据在内存中存在模式原封不动搬到文件中,而文本文件数据asc码搬到文件中。...fflush可以文件不关闭情况下一个流(缓冲区)当中数据清空,这里清空是把缓冲区数据输出到硬盘。这样可以达到边写边输出效果。...:modeCreate:没有指定文件就产生一个新文件,有就打开该文件,并将它裁剪到0;   CFile::modeNoTruncate :打开文件裁剪到0; b.写数据到文件末尾: CFile f...文本文件和二进制文件区别: 文件文件是一种特殊二进制文件,当它遇到回车键10时,写入文件时会自动地前面加一个13,而读出文件时遇到13 10 组合时,又把它还原到10。...]); MessageBox(str);     写入文件指定格式,文件按文本格式存储,此时读出文件时指定二进制格式,读出数据如下图: 如果注释f.setmode(filebuf::binary

2.3K20

【MFC】 MFC文件操作和注册表操作

_In_ DWORD nNumberOfBytesToWrite, //用来接收实际写入文件字节数 _Out_opt_ LPDWORD lpNumberOfBytesWritten...(strCh); TRACE("strTitle = %s . strCh = %s, strSh = %s",szTitle,szCh,szSh);//没读取出来-_- } 注册表编程 注册表存储二进制文件里面.../打开的当前项句柄,实际上就是那几个分支选项 _In_ HKEY hKey, //打开或者创建表项名称 _In_opt_ LPCWSTR lpSubKey, //指示被存储信息类型...return; } TRACE("dwType = %d,dwValue = %d,dwAge = %d",dwType,dwValue,dwAge); ::RegCloseKey(hKey); } 文件操作实际应用...视频存储 文件传输CFile和socket结合使用 C语言和MFC文件操作用途广泛,Win32 API、ifstream,ofstream用少。 配置文件windows 注册表操作-病毒-逆向

1.3K20
  • C++实现哈夫曼编码压缩软件

    (包括初始化) 1、 读原文件,统计字节频度,定义Huffman树和Huffman编码储存结构 读取文件,新建一个二进制文件用于存放统计数据,用while语句逐个读取源文件每一个字节,每次读取时候分别统计出现次数...根据编码写入文件:得到哈夫曼编码后先将缓冲区置为空,然后按照每8位为一个字节,二进制转为十进制进行写入文件,如果最后缓冲区还有元素,则在后面补8个0,然后再整除8,变为8位元素。...,即源文件对应字符和字符频度,哈夫曼编码每八位转成一个十进制值对应字符时,有可能哈夫曼编码不是8整数倍,需要在哈夫曼编码最后面补充8个0,多余哈夫曼编码便可借0补位,以此避免二进制文件写入错误...2、 对压缩文件进行解压 (1) 读取分哈夫曼总编码生成二进制数据分批次装满缓冲区,写入文件 (2) 缓冲区内下一位,若是0,则转向左孩子,若是1,则转向右孩子 (3) 找出叶子节点,并把该字节写入解压文件中...,即是还原每个节点对应哈夫曼编码,找出每个哈夫曼编码对应节点,节点对应ASCII码字符写入生成文件 ifp = fopen(dcp_inname, "rb"); if (ifp ==

    2.2K60

    【MFC】MFC基础篇(1)

    //重放文件 pDC->PlayMetaFile(metafile); //准备一个新录制 m_dcMetaFile.Create(); //录制中重放旧元文件 m_dcMetaFile.PlayMetaFile...(metafile); //删除元文件 DeleteMetaFile(metafile); //无效界面-请求重绘 Invalidate(); 兼容设备描述表 兼容设备是一种内存设备,显示图像过程中...文件 文件读写 写入文件 void CMFCApplicationView::OnFileWirte() { // TODO: 在此添加命令处理程序代码 CString hello = _T("hello...//打开文件 //写入文件 //关闭文件 CString path = fileDlg.GetPathName(); CFile file(path, CFile::modeWrite...); //获取当前列表中选择,返回一个整型,该选项列表中位置 int n = list->GetCurSel(); //返回选项放到text中 list->GetText(n,text

    1.6K30

    VC6.0基础知识使用小结

    文件打开对话框类CFileDialoag和CFile文件使用 (1)、创建打开文件对话框:                                   CFileDialog dlg...  m_path;                                                  m_path=m_FilePath;//文件路径放入m_path                                                 ...(m_path,CFile::modeRead); (4).逐行读取文件:       CStdioFile File;///可以逐行读文件类                         ...CString   strLine;                              while(File.ReadString(strLine))   //////每行都放进strLine...打开多个文件 try { CString str("",10000);//这是做为存放打开文件名和路径字符串空间10000这个值设置就觉得有些不妥当 CFileDialog openfile

    1.3K20

    Apache Kudu 架构

    为了使其有用,开发人员需要知道Kudu的确切版本和发生崩溃操作系统。请注意,虽然minidump包含堆内存转储,但它确实包含堆栈内存,因此可以应用程序数据显示minidump中。...,都是B+Tree,磁盘上存储都是放在CFile文件,右图为CFile文件格式 Cfile:包含Header,Data,Index,Footer四块,Index有两种,posidx index...DiskRowSet是MemRowSet达到1G刷新一次或者是时间超过2分钟后刷新到磁盘后生成实际底层存储是是有Base Data(一个CFile文件)、 多个Delta file(Undo data...随着时间推移,客户端缓存可能会变得过时,并且当写入发送到不是领导者tablet服务器时,则将被拒绝。 然后,客户端通过查询主服务器发现新领导者位置来更新其缓存。...类型数据库,对表设计主要在于rowkey与列族设计,列类型可以指定,因为HBase实际存储中都会将所有的value字段转换成二进制字节流。

    1.9K31

    一文了解Kudu核心原理

    master新表元数据写入catalog table(目录表),并协调在tablet server上创建tablet过程。...通过 Raft协议,tablet 多个副本选举出 leader,它负责接受请求和复制数据写入到其他follower副本。一旦写入数据大多数副本中持久化后,就会向客户确认。...DiskRowSet磁盘上具体存储为一个个CFile文件,但上面提到DiskRowSet 包含六个部分并不是存在同一个CFile中,而是独立多个CFile内,每一部分都会形成单独CFile。...然而事实上磁盘中我们并不能看到CFile,而是一个个.data和.metadata文件。 ?...它们关系如下: .metadata文件记录是一个DiskRowSet中每个block对应CFile位置以及映射关系,写磁盘通过container处理,ContainerCFile合并到.data

    3K30

    python之configparser配置文件解析器

    一个不是很重要介绍 configparser 模块是 Python 标准库中用于处理配置文件模块,它可以读取、写入和修改配置文件。...下面简单写一下 configparser 模块使用示例 写入配置使用方法 example.py 示例文件 # -*- coding: utf-8 -*- # @Author: Mehaei # @Date..., 这个属性既然能读, 当然也可以按实际开发情况更新和修改 print("配置布尔值", configparser.ConfigParser.BOOLEAN_STATES) # 获取配置子节点...undefined 读取配置文件高阶用法 配置文件中使用配置文件变量 有时候我们需要在配置文件中时候使用配置文件变量 由几个不同变量组成一个新变量..., 会多次导入并使用这个配置文件 下面我们试着读取配置文件封装一下, 再写个单例模式, 随便回顾一遍前面文章内容 就不必每次都读取并实例化一遍配置文件 example.py 实例文件 # -*

    15010

    VFP提取源码中各项信息,快速转换语言,时间比钱值钱

    办法,为了多快好省,为了今后方便,为了更多地省下自己宝贵时间,只能自己上手,于是就有了现在这个辅助工具《VFP源程序显示信息及注释文本等批量提取与翻译后写入》,名称而已,可能不能表达其所包含各种功能...写回方法或过程中,代码行发生变化时会生成原始代码与修改后代码对照日志; 12、提取和写回过程中,如果发生文件打开或者写入错误,会生成错误日志文件; 13、程序还可以一键提取目录下所有文件全部代码...&行后注释等信息还附加回去 RETURN cNewCode ENDIF 此PRG文件放在外面的原因,是因为每一次要使用条件,要进行增删查改工作任务都不一样,需要根据实际需要进行修改,不能固化,您想做什么工作...,想办法找到那个文件及其代码行位置,人工修正一下: FOR m.ui=1 TO ALEN(THISFORM.aCodeProcing,1) cstring=cstring+CHR(13)+CHR(10...3、注释信息写入、程序中显示信息写入、MPR菜单写入时,会即时进行编译,如果出现错误,会第一时间发现。 4、总体写入完毕后,可以对项目进行一次整体编译、试运行,看看有没有错误发生。

    33420

    利用键盘钩子捕捉linux键盘动作,利用键盘钩子捕获Windows键盘动作

    (); file.Write(c,1); file.Close();}  当有键弹起时候就通过此函数刚弹起键保存到记录文件中从而实现对键盘进行监控记录目的。...另外创建一个单文档应用程序,把所需动态链接库头文件、lib库复制到工程目录中,动态链接库复制到Debug目录下。...再通过”Project”,”Add To Project”,”Files…”LaunchDLL.h添加到工程中来,最后视类文件KeyHook.cpp中加入对其引用: #include “LaunchDLL.h...另外创建一个单文档应用程序,把所需动态链接库头文件、lib库复制到工程目录中,动态链接库复制到Debug目录下。...再通过”Project”,”Add To Project”,”Files…”LaunchDLL.h添加到工程中来,最后视类文件KeyHook.cpp中加入对其引用: #include “LaunchDLL.h

    2.7K10

    ❤️爆肝新一代大数据存储宠儿,梳理了2万字 “超硬核” 文章!❤️

    master是以文件形式存储磁盘中,所以说,第一次初始化集群。...CFile,下面我们看看CFile文件格式:     CFile包含Header、Data、Index、Footer几块,其中Data部分起始部分是为空值条目建立bitmap,仅针对可为null...下面看看DiskRowSet数据磁盘上分布:     磁盘上每个DiskRowSet有若干个.metadata及.data文件,metadata文件记录是DiskRowSet元信息,主要包括哪些...在从离线数据源加载历史数据(称为“backfill inserts”)情况下,插入每一行都可能遇到主键索引冷区域,该区域驻留在内存中并且会导致一个或多个HDD磁盘搜索。     ...但是案例2比案例1更加灵活,案例1中当写入数据实际超过20160101时候,全部数据会写入同一个分区,会造成分区过大,单个tablet无法存储。案例2则可以增加分区适应新写入数据。

    85540

    【CCD图像检测】3:图像调试方法

    图24:图像显示软件     以上软件主要作用是:小车静止时利用串口通讯摄像头所见PC机上直观呈现出来,而且能导出数据供用户分析。...不同位置矩形块颜色对应着不同位置数字图像矩阵数据,这样就能将数据还原成图像直观再现。 3.利用CFile类,接收到图片灰度数据以矩阵式排列导出保存为文本文件。...图25:图像数据仿真播放器     以上软件主要作用是:小车跑道上运行一周后,赛道图片存储到扩展FLASH模块中,然后再利用串口通讯所有数据发送到上位机并存储为一个二进制文件,然后本软件就对此文件进行播放...本软件编写过程在此不再赘述,对于有一些MFC编程经验同学来说,自己编写也并不困难。故笔者也只对主要应用到一些技术作些罗列: 1. 利用CFile类,读取图片文件并进行播放和导出中间数据。...故笔者构想,用一个完全独立模块来记录小车运动中图片信息,供用户分析。 选择ARM内核STM32作为处理器,引入一根视频信号线,然后AD,再利用SPI对SD卡写入FAT文件系统二进制文件

    1.1K30

    Linux OpenSSH后门添加与防范

    不过很多Linux服务器配置了OpenSSH服务,获取root权限情况下,可以通过修改或者更新OpenSSH代码等方法,截取并保存其SSH登录账号和密码,甚至可以留下一个隐形后门,达到长期控制Linux...实际测试过程中,还需要清除Apache日志。可供参考日志清除命令如下。...· IPTable中添加SSH访问策略。 · 查看命令历史记录,对可疑文件进行清理。在有条件情况下,可重做系统。 · 修改服务器所有用户密码为新强健密码。...在上面的命令中,过滤错误信息、/dev/null信息和拒绝(denied)信息,找出打开了读写模式(WR)文件(因为要把记录密码写入文件)。...可以找到以读写方式记录在文件SSH后门密码文件位置,并通过该方法判断是否存在SSH后门。当然,也有记录密码,而仅仅留下一个万能SSH后门情况。

    2.5K30

    序列化介绍

    它在此过程中,先将对象公共字段和私有字段以及类名称(包括类所在程序集)转换为字节流,然后再把字节流写入数据流。随后对对象进行反序列化时,创建出与原对象完全相同副本。...方法将对象写入到一个文件流中; 最后,利用BinaryFormatterDeSerialize方法读取文件流,恢复对象。...MFC 为数据读写设计了三个基本类——CFileCFile类)、CStdioFile(标准I/O文件类)、CArchive(CArchive类)。...4.3.3 注意事项 使用这种方法需要注意是: l 需要包含afx.h头文件; l 它不支持string类型序列化,但是支持CString类型序列化; l 需要将项目属性中MFC属性配置为“共享...不可修改被序列化代码情况下,应该采用非侵入式方式。

    94551

    windows10 记事本进程 键盘消息钩子 dll注入

    MFC使用改为“共享DLL中使用MFC”,原因是dll中会用到CString类型,要加入#include 这个头文件,如果设置MFC的话,之后编译会报错;字符集改为“使用多字节字符集...4、如图点击配置管理器: 5、Debug配置平台改为64位,原因是:我windows是64位,记事本软件也是64位(虽然它执行文件System32文件夹下,但是用PCHunter可以看到它是...6、文件目录下新建一个名为DLLcpp文件: 7、现在我们可以写代码了: #include //CString文件 #include "stdio.h" #include "...8、文件目录下新建一个名为DLLdef文件: 9、添加如下代码,可以KeyboardProc函数导出: LIBRARY DLL EXPORTS KeyboardProc 整个项目下只有“源文件...id以及线程id,对比记事本进程id,相同的话就锁定了记事本窗口所在线程id; 思路3:其实最开始我们源头就是记事本进程名notepad.exe,我们有没有办法绕过进程id,找到线程id呢,FindWindow

    1.7K10
    领券