C++ string字符串“1:2:41,1:3:5”怎么解析出1:2:41和1:3:5
时间: 2023-06-01 22:06:59 浏览: 60
可以使用 strtok 函数来解析字符串,具体实现代码如下:
```
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[] = "1:2:41,1:3:5";
char* p = strtok(str, ",");
while (p != NULL)
{
cout << p << endl;
p = strtok(NULL, ",");
}
return 0;
}
```
输出结果为:
```
1:2:41
1:3:5
```
其中,strtok 函数的第一个参数是要解析的字符串,第二个参数是分隔符。在第一次调用时,函数返回第一个 token(即第一个以逗号分隔的子串),在后续调用时,第一个参数传入 NULL,函数会继续从上一次位置之后的字符串中查找下一个 token。
相关问题
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
```