是否有函数可以按 C 中定界符的第一个实例进行拆分?
Is there a function to split by the FIRST instance of a delimiter in C?
我知道 strtok()
函数允许您使用预定义的分隔符(或一组分隔符)拆分字符串,但是有没有办法通过分隔符的第一个实例来拆分字符串?
示例:(Delimiter=":")
输入:“主持人:localhost:5000”
输出:[“主机”,“localhost:5000”]
输出不一定要在列表中,但字符串需要拆分成两个字符串
感谢您的帮助!
在 C++ 中,您可以使用 string class and its members find and substr.
轻松完成此任务
我编写了一个小片段来演示它:
#include <string>
using namespace std;
void main()
{
string sInput = "Host:localhost:5000";
string sSeparator = ":";
string s1, s2;
size_t pos = sInput.find(sSeparator);
s1 = sInput.substr(0, pos);
s2 = sInput.substr(pos +1, string::npos);
// Print result strings
printf(s1.c_str());
printf("\n");
printf(s2.c_str());
}
第一次调用 strtok
时,请使用要分割的分隔符。
对于第二次调用,请使用空分隔符字符串(如果您确实需要字符串的其余部分)或使用 "\n"
,以防您的字符串可能包含换行符而您不这样做想要拆分(甚至 "\r\n"
):
const char* first = strtok(buf, ":");
const char* rest = strtok(NULL, "");
/* or: const char* rest = strtok(NULL, "\n"); */
我知道 strtok()
函数允许您使用预定义的分隔符(或一组分隔符)拆分字符串,但是有没有办法通过分隔符的第一个实例来拆分字符串?
示例:(Delimiter=":")
输入:“主持人:localhost:5000”
输出:[“主机”,“localhost:5000”]
输出不一定要在列表中,但字符串需要拆分成两个字符串
感谢您的帮助!
在 C++ 中,您可以使用 string class and its members find and substr.
轻松完成此任务我编写了一个小片段来演示它:
#include <string>
using namespace std;
void main()
{
string sInput = "Host:localhost:5000";
string sSeparator = ":";
string s1, s2;
size_t pos = sInput.find(sSeparator);
s1 = sInput.substr(0, pos);
s2 = sInput.substr(pos +1, string::npos);
// Print result strings
printf(s1.c_str());
printf("\n");
printf(s2.c_str());
}
第一次调用 strtok
时,请使用要分割的分隔符。
对于第二次调用,请使用空分隔符字符串(如果您确实需要字符串的其余部分)或使用 "\n"
,以防您的字符串可能包含换行符而您不这样做想要拆分(甚至 "\r\n"
):
const char* first = strtok(buf, ":");
const char* rest = strtok(NULL, "");
/* or: const char* rest = strtok(NULL, "\n"); */