使用 std::cin.read() 从文件或者管道中读取字符时,当读到 "\r\n" 时会自动转换为 "\n",同样std::cout.write() 写"\n" 时会写成 "\r\n"。
如果以二进制模式读写文件则不会有该问题,可以采用:
std::filebuf fb;
fb.open ("test2.txt", std::ios::in | std::ios::binary);
一种更通用的方式是使用 ReadFile 和 WriteFile
HANDLE std_input_handle = ::GetStdHandle(STD_INPUT_HANDLE);
while (size > 0)
{
DWORD bytes_read = 0;
if (::ReadFile(std_input_handle, buff, size, &bytes_read, NULL))
{
size -= bytes_read;
buff += bytes_read;
}
else
{
ret = false;
break;
}
}
HANDLE std_output_handle = ::GetStdHandle(STD_OUTPUT_HANDLE);
::WriteFile(std_output_handle, buff, size, &write_size, NULL);