文本文件 Cfile C++ 中的行数

Posted

技术标签:

【中文标题】文本文件 Cfile C++ 中的行数【英文标题】:the number of line in text file Cfile C++ 【发布时间】:2019-06-18 11:56:17 【问题描述】:

我想使用 Cfile 打印在 C++ 中打印的行数。 我想根据日期写行数。 例如在同一个文件中写了两天,

Nr 日期时间码值 1 2019 年 10 月 6 日 09:10 220 55 2 2019 年 10 月 6 日 10:16 33 23 3 2019 年 10 月 6 日 10:50 55 11 1 2019 年 11 月 6 日 03:55 11 15 2 2019 年 11 月 6 日 08:22 18 20

除了行号,一切都正确

CString strDate, strYearShort, strTime;

strYearShort = (CString)Datum.year;
strYearShort = strYearShort.Right(2);
strDate = (CString)Datum.day + '.' + (CString)Datum.month + '.' + strYearShort;
strTime = (CString)Zeit.hour + ':' + (CString)Zeit.minute;

buf.Format(_T("%s\t%s\t%s\t%s\t%s\t%d\r\n\r\n"), strDate, strTime, (CString)number, (CString)cardnumber, value);

enter code hereif (CTime::GetCurrentTime().GetDay() != lastWriteDay) 
        for (i = 1, i < 100, i++) 
            int Nu = i,
        
    
    else if (CTime::GetCurrentTime().GetDay() = lastWriteDay) 
        Nu == 0;
            or (i = 1, i < 100, i++) 
            Nu = i,
        
    

【问题讨论】:

代码和示例输出似乎不匹配。你能澄清一下你想要做什么吗? 这是一个小例子,输出有更多信息。我的问题是如何打印行数并在第二天从 1 开始 你是说你想要一个4 而不是1 在输出的最后一行? 1 在新的日期,就像我写的一样 听起来很简单。只需保留上次写入时间/日期的变量。写入新行时,将上次写入时间与当前时间进行比较。如果日期不同,请重置行号。 【参考方案1】:

保留最后写入日期的变量:

// Should be persistent for lifetime of app:
// eg: global, static, or class member
int lastWriteDay = 0;

写入新行时,将上次写入日期与当前日期进行比较。如果日期不同,请重置行号。

....
if (CTime::GetCurrentTime().GetDay() != lastWriteDay) 
    number = 1;
    lastWriteDay = CTime::GetCurrentTime().GetDay();

// Do write....
....

然后你可以在创建字符串的时候更新数字:

buf.Format(_T("%s\t%s\t%d\t%d\t%s\t%d\r\n\r\n"),
    strDate,
    strTime,
    number++,    // Increment for next time
    cardnumber,
    value);

另外,您问题中的示例没有足够的参数。而且似乎没有必要将整数转换为CString。只需使用%d 格式说明符。

TODO:您可能希望添加一些在启动时运行的代码,这些代码会打开文件、读取最后一行并解析该行以获得最后写入日期。然后将lastWriteDay 初始化为那个。当应用因某种原因在同一天退出并重新启动时,这是必需的。

【讨论】:

if (CTime::GetCurrentTime().GetDay() != lastWriteDay) for (i = 1, i 我不确定你在用循环做什么。只需将我的代码添加到您调用 buf.Format(.... 的代码之前 你好,今天我在机器上尝试了这段代码。数字没有增加,它每次都给我 1。我累了好几次,但没有工作 你能帮我吗 这是我使用的代码,n 的唯一值是 1

以上是关于文本文件 Cfile C++ 中的行数的主要内容,如果未能解决你的问题,请参考以下文章

C++文件读写操作如何统计文本的行数及如何读取文件某一行内容

在 C++ 中计算文本文件中的文本行数时出错

如何有效地读取 LARGE 文本文件中的行数

sh 检查文本文件中的行数

Python - 如何获取文本文件中的行数[重复]

读取大文本文件VB6中的行数