c++-急!MFC 文本读写的问题

问题描述

急!MFC 文本读写的问题

我想只改写文本的第一行数据

 void EditView::WriteInTitle(CString strName, CString lpsz)
{
    CFile WriteFile;
    WriteFile.Open(strName, CFile::modeWrite | CFile::modeRead | CFile::typeBinary);

    CString subStr = "r";   //要被删除的子串
    int index = lpsz.Find(subStr);
    while (index!= -1)
    {
       lpsz.Delete(index, subStr.GetAllocLength());
       index = lpsz.Find(subStr);
    }

    lpsz = lpsz + "rn";
    LPCTSTR s = lpsz.GetBuffer(lpsz.GetLength());
    WriteFile.Write(s, lpsz.GetLength()*sizeof(CHAR));
    WriteFile.Close();
}

但是我覆盖了第一行后,后面就乱码了。。
目测是写入长度出问题了。。应该是覆盖到了第二行的文字。
但是这里长度不对吗?为什么会超出第一行的文字长度?

解决方案

 CString ReplaceFirstLine(CString s, CString newline)
{
    if (s.IsEmpty()) return newline;
    LPCTSTR sc = (LPCTSTR)s;
    int i;
    int p = -1;
    for (i = 0; i < strlen(sc) - 1; i++)
    {
        if (sc[i] == 'r' && sc[i + 1] == 'n')
        {
            p = i;
            break;
        }
    }
    if (p == -1) return newline;
    return CString(newline + CString(sc + i));
}

void CApp2Dlg::OnButton1()
{
    // TODO: Add your control notification handler code here
    CString str;
    CString t = "title";
    m_edit.GetWindowText(str);
    str = ReplaceFirstLine(str, t);
    m_edit.SetWindowText((LPCTSTR)str);
}

解决方案二:

代码没有考虑 r 和 rn,如果 rn只Delete掉r就破坏文本内容 了
Remarks

Call this member (CString::Delete) function to delete a character or characters from a string starting with the character at nIndex.

解决方案三:


    CString subStr = "r";   //要被删除的子串
    int index = lpsz.Find(subStr);
    while (index!= -1)
    {
       lpsz.Delete(index, subStr.GetAllocLength());
       index = lpsz.Find(subStr);
    }

这段代码是把数据内的换行符去掉,只在末尾加换行符。(因为每写入一次末尾都会加一个换行符)

解决方案四:

顺便说下,不要悬赏分也可以提问哦。

时间: 2024-09-15 16:35:35

c++-急!MFC 文本读写的问题的相关文章

mfc文本框edit ctrl光标焦点问题-急在线等-谢谢

问题描述 mfc文本框edit ctrl光标焦点问题-急在线等-谢谢 有2个文本框A,B 文本框A:作为log输出信息窗口,假设不停地输出log信息,我使用setsel.setfocus.replacesel的方法做的末尾追加:文本框B:一个输入的文本框,在文本框A不停输出的前提下,光标焦点老是跑到文本框A的末尾: 问题:文本框B怎么才能在 文本框A不停输出的前提下 获取光标焦点,焦点不跑到A? 谢谢,描述的应该很清楚了,如果不清楚,请追问,再次谢谢. 解决方案 追加文本用不着设置焦点.Send

c++-mfc文本框图形重叠问题

问题描述 mfc文本框图形重叠问题 void CVisionTest::OnPaint() { //CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CDialog::OnPaint() UpdateWindow(); m_userDirection=m_direction; CRect dlgRect,staticRect,groupRect; this->GetWindow

64位-MFC程序读写并口时,什么避免状态寄存器10和11位高电平时的影响数据位和控制位的状态?

问题描述 MFC程序读写并口时,什么避免状态寄存器10和11位高电平时的影响数据位和控制位的状态? Win7 64位系统使用MFC程序读写并口时,发现并口状态位寄存器控制的10号.11号管脚为高电平时,并口数据位管脚电平被强制置低,控制位的14和17号管脚周期性跳变.经Google.百度查了发现并口有一套为打印机设计的一套通讯协议,但不知道什么去除通讯协议的影响.或者还有什么接口直接操作并口? 我目前的项目需要用并口与外部设备通讯,输入信号用到并口状态寄存器. 编程使用的接口是WinIo(下载网

mfc c++ 读写log文件-mfc/c++ 读写log文件并可以显示到窗口

问题描述 mfc/c++ 读写log文件并可以显示到窗口 服务器多线程想把每个线程的运行过程(接受,发送,产生异常)记录到log文件中,如何创建和读取这个log文件. 解决方案 就是普通的文件读写被,可以把函数写成一个宏,参数就是当前代码行数和对应的错误字符串说明 解决方案二: http://www.cnblogs.com/mazhenyu/p/4139352.html

文本读写CStdioFile流文件

char *pFileName="test.txt"; CStdioFile sf; if(!sf.Open(pFileName,CFile::modeCreate|CFile::modeReadWrite|CFile::typeText)) { #ifdef _DEBUG afxDump<<"Unable to open file"<<"\n"; #endif exit(1); } char aaa[]="aa

【C/C++学院】0826-文件重定向/键盘输入流/屏幕输出流/字符串输入输出/文件读写简单操作/字符文件读写二进制与文本差别/get与getline挖掘数据/二进制与文本差别/随机位置/多线程初级

文件重定向 #include<iostream> using namespace std; void main() { char str[30] = { 0 }; cin >> str; cout << str; system(str); cerr << "error for you"; cin.get(); cin.get(); } 键盘输入流 #include<iostream> #include <stdlib.h

PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)_php技巧

本文实例总结了PHP目录与文件操作技巧.分享给大家供大家参考,具体如下: Demo1.php <?php //将一个路径赋给一个变量 //它目前来说,只是一个字符串,字符串表示的是一个目录的路径 //文件名包含,文件的名称 + 文件的扩展名(就是.后面的文件类型) //文件的扩展名说白了就是文件后缀 $path = 'C:\AppServ\www\Basic6\Demo1.php'; // echo basename($path); // echo '<br/>'; // //dirna

carchive-MFC中读写文件问题 CArchive写入文件的是乱码

问题描述 MFC中读写文件问题 CArchive写入文件的是乱码 代码如下,写入文件之后再打开txt发现除了前面的学号,后面的都是乱码.各行写有注释,请各位帮忙看一下,我觉得可能是宽字节的问题,但是本人是小白不知道该怎么弄,谢谢各位. void Add::OnClickedIdbAdd() { // TODO: Add your control notification handler code here UpdateData(); if (!m_aComp || !m_aEng || !m_a

《python 与数据挖掘 》一 2.5 文件的读写

本节书摘来自华章出版社<python 与数据挖掘 >一书中的第2章,第2.5节,作者张良均 杨海宏 何子健 杨 征,更多章节内容可以访问"华章计算机"公众号查看. 2.5 文件的读写 文件访问是一门语言重要的一环,适当地进行文本读写能够保存一次程序运行下来的结果.在数据挖掘的工作中,数据量很大,整个挖掘程序可以分为几部分,我们应该把每一部分运行的结果都保存下来,这样如果后面的程序出现错误,我们也不必再从头开始.而数据挖掘中最普遍的是对txt.csv等文件进行读写处理. 2.