【发布时间】:2013-02-24 23:34:51
【问题描述】:
我正在尝试检查一行是否正好有 10 个单词。我这样做的方式是复制该行,并逐个提取并增加计数器,如果它是10,我操纵该行。但我觉得这非常低效,因为我必须对每一行都这样做,而且大多数行都是 10 个单词。所以我正在寻找一种更有效的方法来做到这一点。
while(getline(ifs, line)){
istringstream iss (line);
int s_counter = 0;
istringstream iss_copy = iss; //create a copy to test if there are 10 strings in a iss
string s;
while (iss_copy >> s){
++s_counter;
}
if (s_counter == 10){
while(iss>>word){
...//manipuate each word
}
}
}
【问题讨论】:
-
可以只计算行中的空间吗?
-
我不认为在考虑是否应该优化代码时应该考虑到感觉..
-
@billz 我想过,但本质上不是一样的想法吗?
-
@HoKy22 我的意思是:ideone.com/tOfybI,你保存 istringstream 操作
-
@billz 好主意,但实际代码如下所示:AH Ks Js AD Ac 6c 10s 9H 8s 7H //blah blah blah.. 我实际上只讨论之前的部分 //