在 c++ 中使用 fstream读/写二进制数据和控制字符
我正在尝试使用 C++ 编写一个程序,在字符串和字符之间执行 XOR 操作。结果存储在文件中并稍后读回。 XOR 运算的某些输出会导致字符变成控制字符,例如 SOH、ACK、STX、BEL。然后,这些控制字符会阻止程序继续运行,因此它只会将 XOR 操作输出的一半写入或读取到文件中。我尝试使用 ios::binary 模式来避免这种情况发生,但问题仍然存在。还有其他方法可以强制避免控制字符操作吗?
I am trying to write a program using C++ performs XOR operation between a string and a char. The result is stored in a file and read back later. Certain outputs of the XOR operation cause the characters to become control characters like SOH, ACK, STX, BEL. These control characters then stop the program from progressing so it will only write or read half the XOR operation output to the file. I tried using ios::binary mode to avoid this from happening but the problem still persists. Are there any other methods to forcefully avoid control character operation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,无论任何控制字符,都可以简单存储。请使用流的未格式化IO函数。请阅读此处和此处了解未格式化的 io 函数。因此,例如 put,写入 或 get 和 读取。
以二进制或文本模式打开文件基本上不会对您的应用程序产生任何影响。请阅读此处了解模式的差异。
有了上面的知识,就可以轻松实现该功能了。
请参阅:
Yes, regardless of any control characters, it can be simply stored. Please use unformatted IO funcions of the stream. Please read here and here about unformatted io functions. So, for example put, write or get and read.
Opening the file in binary or text mode will basically make no difference in your application. Please read here abaout the difference of the modes.
With the above know how, the function can be implemented easily.
Please see: