C++-MFC中如何换行读取文件中的数据

发布于 2016-10-23 05:52:47 字数 502 浏览 1261 评论 2

:020000040000FA
:100000002500DC0A790359030C0E39000606390570
:10001000260619051902E20100080408000806086E
:10002000080800080A080208000805080008040873
:100030000908010808080008800D38007C00EA055E
:10004000A3050D090209FC06800D000D4306200AD8
:1000500058014306200A2A008B0700088B04390A3E
:10006000070C340A7600080C3A0076038B05040C62
:100070001C0A0A02160406061605800E4307420AE9
:021FFE00FA0FD8
:00000001FF
假设上述数据存放在a.hex中(使用CFile方式操作文件),如何获取换行读取上述数据?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜柠檬 2017-10-17 04:14:05
CFile file;
CString data;

file.Open("FileName", CFile::modeRead | CFile::typeText);
file.Read(data.GetBuffer(file.GetLength()), file.GetLength());

// 做些对字符串的操作,都放到 data 里面喽
// Windows 的话,默认的换行字符是 rn

file.Close();

看实例中的文本长度并不是很大,直接全部存入 CString 变量中即可
通过 data.Find("rn") 可以获取到换行的位置,剩下的就是你需要的操作了

更新
假设文件中的内容都放在了 data 变量中,要需要读取第 x 行的数据:

CString getLine(CString data, int line)
{
    int start = 0;
    int end = 0;

    for (int i = 0; i < line; i++)
    {
        end = data.Find("rn", start);
        if (-1 != end)
        {
            start = end + 2;
        }
        else
        {
            return NULL;
        }
    }

    return data.Mid(start, end - start);
}

使用 CString line = getLine(data, x); 即可

瑾兮 2016-11-05 17:29:32

直接用c++的流来读就好了

char buffer[1024];
ifstream in( "a.hex");
in.getline(buffer,1024);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文