我试图找到使用C ++和Mac Automator完成某项活动所花费的总时间(您不需要知道 Automator帮助我)。我正在使用Mac Automator使用“事件摘要”和“新文本文件”操作输出文本文件。它输出如下文本文件: Viewable text file
我目前正在为一些非常微不足道的事情而苦苦挣扎;我无法在文本文件中准确找到“时间”和“日期”字样。如果我找不到单词“时间”和“日期”,我就无法开始处理完成该活动所花费的总时间,或者该活动是否超过了午夜(我有时会进入ams)。到目前为止,我认为我花了四个小时的结果好坏参半。任何反馈都将不胜感激。
以下代码是我目前使用的代码。我可以在文件的最开头找到“时间”和“日期”这个词,或者如果“:”在“时间”或“日期”之前,但是当它在不同的行上时,程序失败:
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);
如果你想要自动贩卖工作流程,我可以给你。
答案 0 :(得分:1)
您需要检查一些假设:
strcmp("Time",buff)
假设你的整个字符串&#34; buff&#34;只有一个字在其中&#34;时间&#34;。
那不是你想要的。如果假设1为真,你可以简单地做
if strncmp(buff, "Time", 4) == 0 {
// do something, as you found time
}
否则,对于通用位置,您可以使用strstr(buff, "Time")
进行子串匹配,其中&#34;时间&#34;可以在字符串中的任何位置。获得该职位后,跳过确切的字符数以获得时间值。提取并执行计算。
通常,在解析文件时,您必须对空格/制表符等进行一些限制。否则,代码会变得太脆弱,并且可能会使测试用例失败,这些测试用例会稍微偏离。