我在C++的Windows APIWindows API的RichTextBox中添加额外的换行符在C++
做十六进制编辑器我有一个RichTextBox,我能够读取该文件就好了。问题是当我将文件写回去时,richtextbox添加了某种换行符或某种东西,因此该文件不会输出相同的内容。我使用messageboxes来查看特殊字符是什么,它似乎是某种换行符,因为它会在消息框中显示我的十六进制字节,然后在插入特殊字符的部分显示我的十六进制字节一个稍高的消息框。我在6个月前通过汇编程序遇到了这个问题,并通过删除所有十六进制字节“13”来修复它,因为它们在汇编中不是“\ n”。所以我试图删除“\ n”,但它不起作用,我也尝试删除“\ t”,“\ f”,“\ r”,“\ n \ r”,“\ r \ n”和那些不要删除它。这里是我曾经尝试删除特殊字符的代码(我发现它堆栈溢出和它看起来像它的作品,所以我不认为这是错误的代码)
str.erase(std::remove(str.begin(), str.end(), '\n'), str.end());
我甚至试着写一个函数,说如果你发现任何“\ n”,“\ t”,“\ f”,“\ r”,“\ n \ r”,“\ r \ n”messagebox me,但它永远不会messageboxed我是一些其他的特殊字符。
所以有人可以请帮我找出特殊字符是什么,所以我可以将其删除
感谢
更新这里是如何从一个RichTextBox删除的换行符在Windows
您必须删除'\ r \ n'和'\ n',这里是将richtextbox的内容读入字符串并删除换行符的代码
textboxlength = GetWindowTextLength(hwndtextbox1);
GetWindowText(hwndtextbox1, buffert, textboxlength);
buffer4 = buffert;
buffer4.erase(std::remove(buffer4.begin(), buffer4.end(), L'\r\n'), buffer4.end());
buffer4.erase(std::remove(buffer4.begin(), buffer4.end(), L'\n'), buffer4.end());
textboxlength是LONGLONG,buffert是TCHAR和buffer4是wstring的
''\ r \ n''是一个多字符文字其中没有很好地定义的行为,所以我认为实际上你只进行了两次搜索,一次搜索“\ r”,第二次搜索“\ n”。没有错,但效率低下。我会添加一些代码给我的答案,你可以尝试。 –