通过C++从标准输出中的一些打印数据中提取特定值
Extract a specific value from some printed data in stdout by C++
我在Linux中使用了一个基于C++的模拟器(ndnSIM(。完成一些任务后,它会通过以下命令在stdout
中每秒打印一个输出:
L3RateTracer::InstallAll ("-", Seconds (1));
.这是恒定的,我无法更改其格式以在字符串或数组中打印输出。我想从stdout
的输出中提取特定数据。例如,第 1 秒的输出以stdout
打印如下(每个特征之间的间距由 Tab 键表示(:
1 C1 0 1 Out1 268 335 0
1 C1 0 2 Out2 0 0 0
1 C2 1 1 Out1 0 0 0
1 R3 1 1 Out2 317 0 0
1 P1 -1 all Sat1 268 0 335
1 C1 -1 all Tim1 0 0 0
1 R2 1 9 Out1 0 0 0
我需要为那些在第 2 列中为"R3"和第 5 列中的"Out2"的输出提取第 6 列数据。在此示例中,所需值为"317"。
如何按C++每秒从stdout
的打印输出中提取此值 (=317(?
如果没有必要,您不想为此使用正则表达式或任何东西。
您需要做的是读取文件,按制表符和/或空格拆分它,我无法分辨,然后检索您想要的元素。
在此处阅读有关如何拆分字符串的信息:将字符串拆分为C++?
要从stdin
读取,这就是您想要执行的操作,您需要执行以下操作:
std::string line;
std::getline(std::cin, line);
当与上面的字符串拆分方法结合使用时,它将非常有效。然后,您将能够ToolThatPrintsThings | YourNewTool
使用 awk
:
ndnSIM | awk '{print $6}' | yourProg
现在yourProg
只需要用 cin::getline()
读取每一行,这将是 ndnSIM 输出中的第 6 列。
相关文章:
- JPG-如何从ICC配置文件部分APP2读取/提取数据
- 如何从多维向量中提取数据
- 从异构列表中提取数据
- 从 Windows 中的其他应用程序 GUI 中提取数据
- 如何从 qwebengineview qt5.9 中提取数据
- 如何从shared_ptr<T&>的引用中提取数据
- 从自定义结构数组中提取数据
- 无法从结构数组 C++ 中提取数据
- 用字符串::擦除在C 中提取数据
- C 从结构Deque提取数据
- 如何从 char[] 字符串中提取数据
- 用C++从字符串中优雅地提取数据
- 如何从用|分隔的txt文件中提取数据
- 如何从结构数组中提取数据
- 如何使用 C++11 <thread> 设计从源中提取数据的系统
- 从数据库中提取数据时使用QVariant的正确方法
- 提取数据范围的分隔符
- 从文本文件中查找和提取数据
- 是否有用于从HTML页面中提取数据的库
- 使用Boost::python从嵌入式python中提取数据