编辑:更改标题以更好地反映当前问题。
我现在知道问题的根源在于功能的文本拆分部分。我现在记得我做了什么,我更改了拆分文本,因为我的教程返回了一个错误。
for(const char *c=text;*c;c++)
{
if(*c=='\n') {
string line;
for(const char *n=start_line;n<c;n++) line.append(1,*n);
lines.push_back(line);
start_line=c+1;
}
}
if(start_line)
{
string line;
for(const char *n=start_line; n < c;n++) line.append(1,*n);
lines.push_back(line);
}
'c' 未声明返回,并且没有提及任何其他 c,所以我猜它指的是上面 for 循环中的指针。虽然将“if (start_line)”带入第一个代码块,但一直返回文本中的每个字符,而不仅仅是整个内容。
所以我将代码更改为以下内容:
for(const char *c=text;*c;c++)
{
if(*c=='\n')
{
string line;
for(const char *n=start_line;n<c;n++) line.append(1,*n);
lines.push_back(line);
start_line=c+1;
if(start_line)
{
string line;
for(const char *n=start_line;n<c;n++) line.append(1,*n);
lines.push_back(line);
}
}
else if (*c == *start_line)
{
lines.push_back(text);
}
}
我很确定“else if (*c == *start_line)”比较是导致我这个问题的原因。不确定用什么替换它。不过我想是因为我没有使用任何换行符或不打算这样做,所以我可以使用:
for(const char *c=text;*c;c++)
{
lines.push_back(text);
break;
}
但如果我错了,我还是很高兴知道。*注意:上面的代码现在可以正常工作了,没有问题,而且效果加倍。所以我确定这是我的文本拆分代码。