我需要一行一行地拆分字符串。我以前是这样做的:
int doSegment(char *sentence, int segNum)
{
assert(pSegmenter != NULL);
Logger &log = Logger::getLogger();
char delims[] = "\n";
char *line = NULL;
if (sentence != NULL)
{
line = strtok(sentence, delims);
while(line != NULL)
{
cout << line << endl;
line = strtok(NULL, delims);
}
}
else
{
log.error("....");
}
return 0;
}
我输入了“we are one.\nyes we are.”并调用了doSegment方法。但是当我调试时,我发现语句参数是“we are one.\nyes we are.”,并且拆分失败。有人能告诉我为什么会发生这种情况以及我应该怎么做吗?有没有别的方法可以用C++来拆分字符串?谢谢!
6条答案
按热度按时间2w2cym1i1#
我想使用std::getline或std::string::find来遍历字符串。下面的代码演示了getline函数
jaxagkaj2#
您可以在循环中调用
std::string::find
,然后使用std::string::substr
。参见示例here。
zsbz8rwp3#
dbf7pr2w4#
1.我们有一个多行字符串
1.我们把它们分成一个数组(向量)
1.我们在for循环中打印出这些元素
ycl3bljg5#
使用库range-v3:
使用C++23范围:
u7up0aaq6#
这种相当低效的方法只是循环遍历字符串,直到遇到一个\n换行符,然后创建一个子字符串并将其添加到向量中。