C++ string字符串“1:2:41,1:3:5”怎么解析出1:2:41和1;3:5
时间: 2024-05-01 12:17:20 浏览: 5
您可以使用字符串处理函数 strtok() 来解析出来。首先将字符串中的“,”替换为“:”,然后调用 strtok() 迭代解析出两个子字符串。具体的实现代码如下:
```
char str[] = "1:2:41,1:3:5";
char *p = strtok(str, ",");
while (p != NULL) {
char *q = p;
while (*q != '\0' && *q != ',') {
if (*q == ':') {
*q = ' ';
}
q++;
}
printf("%s\n", p);
p = strtok(NULL, ",");
}
```
输出结果为:
```
1 2 41
1 3 5
```
相关问题
C++ string字符串“1:2:41”怎么解析出1:2:41
可以使用stringstream将C string字符串"1:2:41"解析出1:2:41,具体代码如下:
```c++
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
char str[] = "1:2:41";
stringstream ss(str);
string token;
while (getline(ss, token, ':'))
{
cout << token << ":";
}
return 0;
}
```
输出结果为:
```1:2:41:```
其中,stringstream对象ss将C string字符串"1:2:41"转换为一个字符串流,然后使用getline函数按照":"作为分隔符,将字符串流中的字符分割成若干个子串,存储在字符串token中,最后将拆分出来的子串输出。
C++ string字符串“:,1:3:5”怎么解析出:和1:3:5
可以使用字符串的分割函数来解析出 ":" 和 "1:3:5",具体代码如下:
```cpp
#include <iostream>
#include <string>
#include <vector>
int main()
{
std::string str = ":1:3:5";
std::vector<std::string> vec;
std::size_t prev = 0, pos;
while ((pos = str.find(':', prev)) != std::string::npos)
{
if (pos > prev)
vec.push_back(str.substr(prev, pos-prev));
prev = pos + 1;
}
if (prev < str.length())
vec.push_back(str.substr(prev));
// 输出结果
for (const auto& s : vec)
std::cout << s << " ";
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
1 3 5
```