我正在使用以下内容在 C++ 中解析一个字符串:
using namespace std;
string parsed,input="text to be parsed";
stringstream input_stringstream(input);
if (getline(input_stringstream,parsed,' '))
{
// do some processing.
}
使用单个字符定界符进行解析很好。但是,如果我想使用字符串作为分隔符怎么办。
示例:我想拆分:
scott>=tiger
用 >=
作为分隔符,这样我就可以得到斯科特和老虎。
原文由 TheCrazyProgrammer 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
std::string::find()
函数查找字符串分隔符的位置,然后使用std::string::substr()
获取令牌。例子:
find(const string& str, size_t pos = 0)
函数返回str
在字符串中第一次出现的位置,或者npos
如果没有找到字符串。substr(size_t pos = 0, size_t n = npos)
函数返回对象的子字符串,从位置pos
开始,长度为npos
。如果您有多个分隔符,则在提取一个标记后,您可以将其删除(包括分隔符)以继续进行后续提取(如果要保留原始字符串,只需使用
s = s.substr(pos + delimiter.length());
):这样您就可以轻松地循环获取每个令牌。
完整示例
输出: