我正在尝试直接写入 fstream 输出缓冲区以避免memcpy
.
为什么下面的代码不起作用?
它在 Linux 上编译、运行并生成正确长度的输出文件。但输出文件不包含正确的文本。另请注意,由于某种原因,当我注释掉涉及 的两行时str2
,会生成一个长度为零的输出文件。
注意:这个例子没有避免memcpy
,但如果它有效,它将帮助我memcpy
在我的应用程序中避免 a 。
#include <fstream>
int main(int argc, char *argv[]) {
std::fstream out;
char buffer[512];
out.rdbuf()->pubsetbuf(buffer, 512);
out.open("file.txt", std::fstream::out);
char *str1 = "test text.";
strcpy(buffer, str1);
out.rdbuf()->pubseekpos(strlen(str1), std::ios_base::out);
char *str2 = "why?";
out << str2;
out.flush();
out.close();
}