【发布时间】:2013-10-10 03:22:18
【问题描述】:
我正在使用以下代码来搜索文件并提供数据和相关的行号。但是这个代码在几十万行的情况下是否足够快?我的电脑确实冻结了几秒钟。我需要搜索整数对并在逗号后返回其 RHS 值(一些统计数据),但使用以下代码我可以返回整行。
- 使用
split函数解析返回的数据并获取我的 RHS 值是否是一个好主意
或
- 根据 LHS 参数直接获取 RHS 值。 (好吧,我无法做到这一点)
任何人都可以帮助我实现上述两个中的任何一个吗?
这是我的代码:
#include <string>
#include <iostream>
#include <fstream>
int main()
{
std::ifstream file( "index_hyper.txt" ) ;
std::string search_str = "401" ;
std::string line ;
int line_number = 0 ;
while( std::getline( file, line ) )
{
++line_number ;
if( line.find(search_str) != std::string::npos )
std::cout << "line " << line_number << ": " << line << '\n' ;
}
}
这是我index_hyper.txt文件的内容:
18,22
20,37
151,61
200,62
156,63
158,64
159,65
153,66
156,67
152,68
154,69
155,56
156,14
157,13
160,122
161,1333
400,455
401,779
402,74
406,71
【问题讨论】:
-
什么是 RHS 和 LHS ?什么输入你想要什么输出?
-
此文件的代码冻结了您的计算机?我对此感到惊讶。确定不是病毒检查器?
-
RHS 是右手边,LHS 是 ...
-
@user2754070 啊,没那么大,是其他原因造成的。见this
-
1.7MB? grep 会非常快地解析该文件,无需编写程序来执行此操作