【发布时间】:2018-08-18 11:47:23
【问题描述】:
所以我必须将短语:“大家好!这是:COSC-1436,SP18”分成单独的标记,忽略任何标点符号减去破折号。所以输出应该是:
你好
大家
这个
是
COSC-1436
SP18
然后我必须加密我得到的每个令牌。我只是在使用多个分隔符时遇到了麻烦。这是我目前拥有的。
函数原型:
void tokenize(const string&, const string&, vector<string>&);
函数调用:
tokenize(code, " .,:;!?", tokens);
函数定义:
void tokenize(const string& str, const string& delim, vector<string>& tokens)
{
int tokenStart = 0;
int delimPos = str.find_first_of(delim);
while(delimPos != string::npos)
{
string tok = str.substr(tokenStart, delimPos - tokenStart);
tokens.push_back(tok);
delimPos++;
tokenStart = delimPos;
delimPos = str.find_first_of(delim, delimPos);
if(delimPos == string::npos)
{
string tok = str.substr(tokenStart, delimPos - tokenStart);
tokens.push_back(tok);
}
}
}
唯一的问题是程序遇到标点符号的地方现在有作为空格的标记。有什么建议吗?
【问题讨论】:
标签: c++ string split token delimiter