是否有函数可以按 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"); */