如何用C解析复杂的字符串?

我试图找出如何使用“sstream”和C解析这个字符串

其格式为:“string,int,int”.

我需要能够将包含IP地址的字符串的第一部分分配给std :: string.

这是一个这个字符串的例子:

std::string("127.0.0.1,12,324");

然后我需要获得

string someString = "127.0.0.1";
int aNumber = 12;
int bNumber = 324;

我会再次提到,我不能使用boost库,只是sstream 🙂

谢谢

最佳答案
这是一个有用的令牌化功能.它不使用流,但可以通过以逗号分隔字符串来轻松执行所需的任务.那么你可以用所得到的令牌向量来做任何你想要的.

/// String tokenizer.
///
/// A simple tokenizer - extracts a vector of tokens from a 
/// string, delimited by any character in delims.
///
vector<string> tokenize(const string& str, const string& delims)
{
    string::size_type start_index, end_index;
    vector<string> ret;

    // Skip leading delimiters, to get to the first token
    start_index = str.find_first_not_of(delims);

    // While found a beginning of a new token
    //
    while (start_index != string::npos)
    {
        // Find the end of this token
        end_index = str.find_first_of(delims, start_index);

        // If this is the end of the string
        if (end_index == string::npos)
            end_index = str.length();

        ret.push_back(str.substr(start_index, end_index - start_index));

        // Find beginning of the next token
        start_index = str.find_first_not_of(delims, end_index);
    }

    return ret;
}

转载注明原文:如何用C解析复杂的字符串? - 代码日志