使用c ++功能解析字符串的最有效方法

yop*_*mer 0 c++ string parsing

这可能是一个愚蠢的问题(我希望不是),但它引起了我的注意,我正试图解决它.使用c ++功能解析字符串的最有效方法是什么?我很欣赏每个人的评论,因为我,我相信其他人也一样,成为更好的程序员!以下是我现在用现有知识做的事情:

#include <iostream>
#include <string>
using std::cout;
using std::string;
using std::endl;
void parseLine(string &line)
{
    constexpr char DELIMITER_ONE = '|';
    constexpr char DELIMITER_TWO = '[';
    for (int i = 0; i < line.length(); i++)
    {
        if (line[i] == DELIMITER_ONE || line[i] == DELIMITER_TWO)
        {
            line.erase(i, 1);
        }
    }
    cout << line << endl;
}
int main()
{
    std::string testString = "H|el[l|o|";
    parseLine(testString);

    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Igo*_*nik 5

line.erase(
    std::remove_if(line.begin(), line.end(),
        [](char c) { return c == DELIMITER_ONE || c == DELIMITER_TWO; }
    ),
    line.end()
);
Run Code Online (Sandbox Code Playgroud)

另请参阅:erase-remove idiom