从字符串中提取一个数字
Grab a number from a string
我正在尝试编写一个C++程序,该程序从一个名为myvec的向量中获取输入(每行是一个字符串,如下所示(,其中的行如下所示:
<wgt id='1001'> 0.32365E+04 </wgt>
我需要提取总是位于>和<之间的数字(在这种情况下为0.32365E+04(;,并将它们放入一个称为weight1的向量中。
到目前为止,我完全不知道该怎么做。我想的是:
if(myvec[j].find(...) == 0) {
weight1.push_back(...)
}
但我不确定我会在这些括号里放什么。有没有更简单的方法?
我使用@taocp的建议使其完美工作,如下所示:
void strings()
{
vector <string> myvec;
vector <double> weight1;
myvec.push_back("<wgt id='1001'> 0.12365E+04 </wgt>");
myvec.push_back("<wgt id='1002'> 0.22365E+04 </wgt>");
myvec.push_back("<wgt id='1003'> 0.32365E+04 </wgt>");
myvec.push_back("<wgt id='1004'> 0.42365E+04 </wgt>");
myvec.push_back("<wgt id='1005'> 0.52365E+04 </wgt>");
myvec.push_back("<wgt id='1006'> 0.62365E+04 </wgt>");
myvec.push_back("<wgt id='1007'> 0.72365E+04 </wgt>");
myvec.push_back("<wgt id='1008'> 0.82365E+04 </wgt>");
myvec.push_back("<wgt id='1009'> 0.92365E+04 </wgt>");
for(int i = 0; i < 9; i++) {
weight1.push_back(stod(myvec[i].substr(myvec[i].find('>')+2, myvec[i].rfind('<')-myvec[i].find('>')-3)));
cout << weight1[i] << endl;
}
}
带输出:
1236.5
2236.5
3236.5
4236.5
5236.5
6236.5
7236.5
8236.5
9236.5
非常感谢!
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何获取一个数字的前3位
- 以C++输出一个数字三角形
- 反转一个数字程序不起作用,为什么?
- 如何让用户在 c++ 中选择一个数字
- 输出一个数字,该数字可能是三种类型之一
- C++在不使用pow或循环的情况下计算一个数字的幂
- 我必须更改我的数字最后一个数字和第一个数字,但不要使用仅带有整数或循环的函数.例如从 12345 到 52341
- 找到所有与自己求和的数字X的快速方法,去掉一个数字得到N
- C++[递归]将一个数字写成2的升序之和
- 试图找到一个数字的平方根,但代码不起作用。C++
- 我没有得到一个数字作为输出,而是一个表情符号
- 我的代码应该接受一个数字,并返回字母等级或"Grade is not valid"但 else 语句不起作用
- 将一个数字拆分为多个数字,每个数字只有一个有效位
- 你怎么编码,如果x不等于一个数字,程序就会退出
- 如何将整数数组相乘得到一个数字?
- 为无符号字符* 分配一个数字
- 如何以更有效的方式检查一个数字是否是素数?
- C++显示两个区间之间的数字的程序检查一个数字是否可以表示为两个素数的总和
- 字符串和双精度的麻烦,等值后再得到一个数字