gpt4 book ai didi

c++ - 搜索数据文件 : coding in python vs c++

转载 作者:行者123 更新时间:2023-11-28 08:20:03 25 4
gpt4 key购买 nike

首先,这不是家庭作业!!! :p 我想做的是:

给定一个保存在桌面上的数据文件(文本或数字),即,我希望能够搜索该文件并仅提取我想要的数据并将其打印到屏幕上。我可能想用它做其他事情,但我不知道有哪些选项。

还有,python还是c++更合适。我对 python 不太熟悉,自从我开始使用 c++ 以来已经有好几年了,但我听说 python 效率更高,虽然这个程序的效率可能会或可能不会有什么大不了的,但我听说 python 更容易明白了。

示例、代码、模板(<-- 会很棒)

谢谢大家!

最佳答案

如果不知道如何指定所需的数据,这就有点难以回答。

如果您可以使用正则表达式指定必要的数据,Python 可能会同样高效,并且编写起来会更快一些——但是您可以使用 grep 之类的工具更轻松地完成这项工作。

如果需要更多的处理来确定要显示的数据,Python 可能开始变得相当慢——只要 Python 部分是主要是一个相当“薄”的外壳,大部分繁重的工作都是由各种图书馆完成的。如果您在 Python 本身中进行严肃/重要的处理,它可能会变得相当慢。

如果您使用 C++ 编写,您或多或少会遇到相反的情况——只要您合理小心,性能就不会成为问题的可能性很大.真正的问题将是生产你想要的东西需要多少工作。在不知道您正在寻找什么数据、您希望如何显示这些数据等的情况下,几乎不可能猜到这些。

根据评论进行编辑:像 Data = #### 这样的模式听起来很像正则表达式的经典案例,grep 可以正常工作。

这也是 Python 可能做得很好的事情,但如果你决定用 C++ 做你自己的事情,它可能看起来像这样:

#include <iostream>
#include <string>
#include <regex>
#include <fstream>

int main(int argc, char **argv) {
if (argc < 2) {
std::cerr << "Usage: searched <filename>\n";
return 1;
}

std::ifstream in(argv[1]);
std::string line;
std::regex pat("Data = [0-9]+");

while (std::getline(line, in))
if (std::regex_search(line, pat))
std::cout << line << "\n";
return 0;
}

这假设您要查找行中某处出现的 Data = # 模式。如果您只想在 行时将其视为匹配项,请将regex_search 更改为regex_match

另一个假设是您使用的是相对较新的编译器,其中包含标准正则表达式类。 VS 2010 和 gcc 4.6 就是这种情况(如果我没记错的话),但一些较旧的编译器可能会将其命名为 std::tr1::regex,而一些较旧的编译器仍然没有它完全没有。

关于c++ - 搜索数据文件 : coding in python vs c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6146359/

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