如何删除 GtkTextBuffer 末尾的换行符
How to Delete Newline at End of GtkTextBuffer
所以我正在努力制作一个或多或少固定大小的 GtkTextBuffer(如果有更好的方法,请告诉我),我正在使用标记将缓冲区划分为"条目"。然后使用这些标记,我将缓冲区的一部分从开始迭代器删除到适当标记处的迭代器。
所有这些的问题是它在缓冲区的末尾留下了一个换行符,我无法弄清楚如何删除。有人对此有经验或对如何删除换行符有任何想法吗?
这是我当前的代码:
// markName is a c string and textBuffEntries is an int
// keeping track of how many entries there are in the buffer
snprintf(markName, 9, "%d", textBuffEntries);
if(allMarksPopulated) {
neo_debug(func_mask, "Deleting: %s", markName);
gtk_text_buffer_get_start_iter(buffer, &startIter);
gtk_text_buffer_get_iter_at_mark(buffer, &markIter,
gtk_text_buffer_get_mark(buffer, markName));
gtk_text_buffer_delete(buffer, &startIter, &markIter);
gtk_text_buffer_get_iter_at_line(buffer, &markIter, 1);
gtk_text_buffer_get_start_iter(buffer, &startIter);
gtk_text_buffer_delete(buffer, &startIter, &markIter);
}
neo_debug(func_mask, "textBuffEntries: %d", textBuffEntries);
// Now write the data to the buffer
gtk_text_buffer_get_end_iter(buffer, &endIter);
gtk_text_buffer_insert (buffer, &endIter,
msg_str.c_str(),
msg_str.length());
snprintf(markName, 9, "%d", textBuffEntries);
gtk_text_buffer_get_end_iter(buffer, &endIter),
gtk_text_buffer_create_mark(buffer, markName,
&endIter,
true);
msg_str = "n";
gtk_text_buffer_get_end_iter(buffer, &endIter);
gtk_text_buffer_insert (buffer, &endIter,
msg_str.c_str(),
msg_str.length());
if(!allMarksPopulated && MAX_LINES == textBuffEntries)
{
allMarksPopulated = true;
}
if(MAX_LINES == textBuffEntries)
{
textBuffEntries = 0;
} else {
textBuffEntries++;
}
如上面的评论所述:
我修复了它,我对插入换行符的位置很愚蠢,所以我将其更改为在插入字符串之前而不是附加它。因此,当删除每个"书签"部分时,有一个干净的行尾。
相关文章:
- 如何防止clang格式在流运算符调用之间添加换行符<<
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 在 Stream C++ 文本之前有一个额外的换行符
- 流:CSV 文件中的换行符
- 如何在三元条件运算符中添加换行符和连接? :在 C++ 中
- Clang-格式:在多行语句之后的换行符上打开大括号
- 在输出流中插入换行符
- 防止控制台在通道字符(在 c++ 中)中输入空格(即空格、制表符和换行符)
- QProcess::readAllStandardOutput() 和换行符
- 如果有换行符,clang 格式不会附加大括号
- 提取后返回换行符的C++istream.get()
- 如何在出现换行符之前将多个整数作为输入?
- 正则表达式 获取两个换行符之间的文本
- 包含换行符分隔的单词的文件和C++中这些单词的字符串向量的大小是否相同?
- 在字符串中输入换行符
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- 使用 fgets() 从键盘读取时从以前的输入读取换行符
- C++ 换行符上的合并排序错误中断
- 在 std::string 的末尾插入换行符
- 连接两个文件时如何避免冗余尾随换行符?