String 调用函数C++;
我需要帮助 我编写了一个代码,其目的是修改.txt中特定位置的值。我的第一个想法是将我所有的.txt文件存储在一个向量中,然后处理该向量 为此,我创建了两个函数:一个基本上是拆分.txt中的一行,另一个是在txt中查找好的行。找到后,通过调用第一个来拆分该行,然后我可以修改想要的行的值 或多或少,您可以阅读以下代码:String 调用函数C++;,string,vector,split,String,Vector,Split,我需要帮助 我编写了一个代码,其目的是修改.txt中特定位置的值。我的第一个想法是将我所有的.txt文件存储在一个向量中,然后处理该向量 为此,我创建了两个函数:一个基本上是拆分.txt中的一行,另一个是在txt中查找好的行。找到后,通过调用第一个来拆分该行,然后我可以修改想要的行的值 或多或少,您可以阅读以下代码: #包括 #包括 #包括 #包括 #包括 使用名称空间std; 向量拆分(字符串myData){ 临时病媒; 字符串delim=“”; 字符串buf=“”; int i=0; 而(i
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
向量拆分(字符串myData){
临时病媒;
字符串delim=“”;
字符串buf=“”;
int i=0;
而(i else cerr虽然代码看起来还不错,但我看到了两个bug
我不确定这是否是故意的,但是split
函数从不返回最后一个匹配项。在您的示例中,调用split($DOUBLE EnergySampler 0.019$)
将返回向量[“$”,“DOUBLE”,“EnergySampler”,“0.019”]
。请注意缺少的“$”
在向量的末尾。因此,要解决这个问题,您需要检查函数末尾的buf
是否为空,如下所示(同样,看起来ROOT
解释器接受将char
与string
进行比较,但我在修复中正确地将delim
定义为char
):
向量拆分(字符串myData){
临时病媒;
char delim='';
字符串buf=“”;
int i=0;
而(i
分割的向量上迭代时,你使用的是i
索引变量(来自的外部),而不是的内部的k
索引变量
for(int k=0;k 你能确定benchmark.txt
中的delim
都是空格吗?它们也可以是选项卡(\t
)否?是的,我检查了它占用了所有空格,以及我的文本文件。谢谢。好的,谢谢你的详细回答,我明白了!现在我可以做我想做的了。
$ DOUBLE EnergySampler 0.019 $
$ DOUBLE Dummy 0.123 $
$ DOUBLE EnergySampler 0.018 $
$ DOUBLE Dummy 0.321 $
$ DOUBLE EnergySampler 0.017 $
5
$
DOUBLE
EnergySampler
0.019
$
5
$
DOUBLE
EnergySampler
0.018
$
5
$
DOUBLE
EnergySampler
0.017
$