gpt4 book ai didi

c++ - 在文本文件中查找单词以使用 C++ 提取数据

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:09 27 4
gpt4 key购买 nike

我正在尝试查找使用 C++ 和 Mac Automator 执行某项事件所花费的总时间(您不需要知道Automator 来帮助我)。我正在使用 Mac Automator 使用“事件摘要”和“新建文本文件”操作输出文本文件。它输出一个像这样的文本文件: Viewable text file

我目前正在为一些非常微不足道的事情而苦苦挣扎;我无法在文本文件中准确找到“时间”和“日期”这两个词。如果我找不到“时间”和“日期”这两个词,我就无法开始处理完成该事件所花费的总时间,或者该事件是否超过了午夜(我有时会工作到凌晨)。到目前为止,我想我已经花了四个小时,但结果好坏参半。如有任何反馈,我们将不胜感激。

下面的代码是我目前正在使用的代码。我可以在文件的最开头找到“时间”和“日期”这个词,或者如果“:”在“时间”或“日期”这个词的前面,但是当它在不同的行时,程序失败:

cout << "Reading from the file...." << endl;
infile.open("calendar workflow text.txt");
while(infile.getline(buff, BUFFSIZE, ':')){ //reads everything
cout << buff << endl; // prints everything
if(strcmp("Time",buff)==0){
cout<<"Time found in text\n"<<endl;
}
else if (strcmp("Date",buff)==0){
cout<<"Date found in text\n"<<endl;
}
}
infile.close();
cout<<"Total Time in all events: "<<sumtime<<" hrs"<<endl;
return (0);

如果你想要自动化工作流程,我可以给你。

最佳答案

您需要检查一些假设:

  1. “时间”总是从第一个字符位置开始吗?在看到“时间”一词之前没有空格或制表符?
  2. 能否在同一行中出现多个“时间”字样?
  3. “时间”之前可以出现另一个词吗?

strcmp("Time",buff) 假定您的整个字符串“buff”中只有一个词“Time”。那不是你想要的。如果假设 1 成立,您可以简单地做

if strncmp(buff, "Time", 4) == 0 {
// do something, as you found time
}

否则,对于通用位置,您可以使用 strstr(buff, "Time") 进行子字符串匹配,其中“Time”可以在字符串中的任何位置。获得位置后,准确跳过字符数以获取时间值。提取并执行计算。

通常,在解析文件时,您必须允许使用空格/制表符等。否则,代码会变得太脆弱,并且可能会导致测试用例出现轻微偏差而失败。

关于c++ - 在文本文件中查找单词以使用 C++ 提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27589967/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com