字符串在向量数组中被复制
String being duplicated in vector array
编辑:更改标题以更好地反映当前问题。
现在我知道问题的根源在于,它与函数的文本分割部分。我现在记得我做了什么,我改变了分割文本,因为我的教程返回了一个错误。
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;
}
但是如果我知道我做错了什么就好了。*注意:上面的代码现在工作得很好,没有问题和加倍效果。所以我确定这是我的文本分割代码。
这里给你一个想法:在你的文本呈现方法中,添加一个静态计数器并使用它来设置呈现的每个字符串的颜色。因为你似乎没有那么多的字符串每帧,你可以使用一个颜色组件(如红色)的8位计数器,并设置其他2个组件为255。如果您有超过255个字符串,您仍然可以将计数器值编码为2或3个颜色组件。
有了这个小小的调试帮助,您将能够看到每段文本呈现的顺序。您可以使用pixie和/或变焦来查看"实时"像素值。否则,只需截图并检查结果。
看起来错误绘制的文本是"50b",我怀疑这是一个通常会出现在你的游戏中的字符串。看起来你在画一个通常是空字符串的东西,但有时会拾取垃圾值——换句话说,未定义的行为。
当然,我不能确定,因为我没有足够的信息来找到你的问题。你的glClear对我来说看起来很好,所以你可以放心,额外的文本是在同一帧中绘制的。相关文章:
- 在数组中使用C++中的哈希表复制数组中的元素
- 快速复制数组到阵列
- 如何在C 中复制数组
- 赋值运算符复制数组中除可用空间之外的所有内容
- 尝试复制数组时从 DLL 调用函数时程序崩溃
- 反向复制数组
- 复制数组 - 将数组加倍后崩溃
- 复制数组和气泡排序 C++
- 在结构中复制构造函数:是否复制数组
- 如何从类中复制数组并将新数组的大小加倍
- 在C++中复制数组的麻烦
- 逐行复制数组的内容
- tictactoe和复制数组
- 正在使用数组的名称strring复制数组
- c++复制数组到数组
- . net互操作是来回复制数组数据,还是固定数组?
- 从通过函数发送的结构体中复制数组
- 使用CUDA Thrust置换迭代器复制数组的特定元素
- C/ c++中有复制数组的函数吗?
- 在引用中复制数组