多组字符串:
string result = "219.9332580.00486150.0000000.304833";
或者
string result = "0.1512640.0089790.0000000.001125";
随便两组把字符串,这里面实际是4个float拼成,我想解决的问题就是把他们4个拆出来:
1组:
str1 = 219.933258
str2 = 0.004861
str3 = 50.000000
str4 = 0.304833
2组:
str1 = 0.151264
str2 = 0.008979
str3 = 0.000000
str4 = 0.001125
拆成这样,循环里面不会写了,思路是找到".",然后截取,因为小数点后面6位是固定位,但是整数位不固定,有可能整数位分别是12345位都有可能,这样的字符串应该怎么拆解呢
可以通过 std::string
类提供的 find
和 substr
方法来实现拆解字符串的功能。具体步骤如下:
定义一个字符串变量 result
,并初始化为待分割的字符串。
std::string result = "219.9332580.00486150.0000000.304833";
创建一个循环来遍历每一个浮点数字符串。每次循环都需要记录当前的子串的起点和长度。
int start = 0, len = 0; // 记录子串的起点和长度
for (int i = 0; i < 4; i++) {
// 遍历每一个浮点数字符串
}
在每次循环中,先从 start
开始搜索下一个小数点的位置,然后计算出子串的长度。
size_t dot_pos = result.find(".", start); // 从 start 开始搜索小数点位置
len = dot_pos + 7 - start;
使用 substr
方法截取子串,并将 start
更新为下一个子串的起点位置。
std::string sub = result.substr(start, len);
start += len; // 下一个子串的起点位置为当前子串的末尾位置
完整代码如下:
#include <iostream>
#include <string>
int main() {
std::string result = "219.9332580.00486150.0000000.304833";
int start = 0, len = 0;
for (int i = 0; i < 4; i++) {
size_t dot_pos = result.find(".", start);
len = dot_pos + 7 - start;
std::string sub = result.substr(start, len);
start += len;
std::cout << "str" << i+1 << "=" << sub << std::endl;
}
return 0;
}
输出结果为:
str1=219.933258
str2=0.004861
str3=50.000000
str4=0.304833
正则测试