編集:現在の問題をよりよく反映するようにタイトルを変更しました。
私は今、問題の原因が嘘であることを知っています。それは、関数のテキスト分割部分にあります。チュートリアルでエラーが返されたため、分割テキストを変更しました。
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;
}
しかし、私が間違っていたことがわかってよかったです。*注: 上記のコードは現在正常に動作しており、問題はなく、倍増効果もあります。だから私はそれが私のテキスト分割コードだったと確信しています。