当前位置:  开发笔记 > 编程语言 > 正文

是否有一种内置的方法来拆分C++中的字符串?

如何解决《是否有一种内置的方法来拆分C++中的字符串?》经验,为你挑选了4个好方法。

好吗?字符串我的意思是std :: string



1> heeen..:

这是我使用的perl风格的分割功能:

void split(const string& str, const string& delimiters , vector& tokens)
{
    // Skip delimiters at beginning.
    string::size_type lastPos = str.find_first_not_of(delimiters, 0);
    // Find first "non-delimiter".
    string::size_type pos     = str.find_first_of(delimiters, lastPos);

    while (string::npos != pos || string::npos != lastPos)
    {
        // Found a token, add it to the vector.
        tokens.push_back(str.substr(lastPos, pos - lastPos));
        // Skip delimiters.  Note the "not_of"
        lastPos = str.find_first_not_of(delimiters, pos);
        // Find next "non-delimiter"
        pos = str.find_first_of(delimiters, lastPos);
    }
}


在搜索中出现的旧线程.我会将`split`的签名更改为没有第三个参数,而返回`vector `(`tokens`将是一个局部变量).

2> Martin Cote..:

在C++中没有内置的方法来分割字符串,但是boost提供字符串算法库来执行所有类型的字符串操作,包括字符串拆分.



3> MSalters..:

是的,串流.

std::istringstream oss(std::string("This is a test string"));
std::string word;
while(oss >> word) {
    std::cout << "[" << word << "] ";
}


这是我的工作分割器.如果你想在分隔符上拆分,你可以用`getline(oss,word,':')替换`oss >> word`.

4> strager..:

STL字符串

您可以使用字符串迭代器来完成您的脏工作.

std::string str = "hello world";

std::string::const_iterator pos = std::find(string.begin(), string.end(), ' '); // Split at ' '.

std::string left(str.begin(), pos);
std::string right(pos + 1, str.end());

// Echoes "hello|world".
std::cout << left << "|" << right << std::endl;

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有