Не думаю, что вы можете заставить std::cout
выводить двоичные данные. Интерфейс самого низкого уровня, доступный пользователю через C ++, - streambuf
в std::cout.rdbuf()
. Вы вполне можете предположить, что объект имеет тип basic_filebuf
, а в разделе § 27.9.1.4 стандарта C ++ 11 требуется, чтобы basic_filebuf
реализовывали отдельные текстовые и двоичные режимы.
Проверьте свою платформу- для расширения другого потока до stdout
с использованием его файлового дескриптора. Затем вы можете указать std::binary
в флагах режима.
Однако, возможно, проще передать вывод через вторую программу, которая преобразует окончание строки.
Изменить: теперь я вижу что вы, возможно, захотите пойти немного дальше, чтобы действительно заставить программу напрямую выводить то, что вы хотите.
Вы можете использовать интерфейс C для вывода новых строк, если интерфейс C ++ установлен в небуферизованный режим.
В самом начале вашей программы, прежде чем cout
получит какой-либо вывод, сделайте следующее:
std::cout.rdbuf()->pubsetbuf( 0, 0 ); // go to unbuffered mode
Когда вы хотите вывести новую строку, сделайте это так:
_write( STDOUT_FILENO, 1, "\n" ); // do not convert line ending
Вы можете обернуть этот маленький ... самородок ... внутри настраиваемого манипулятора:
#include <unistd.h>
std::ostream &endln( std::ostream &s ) {
if ( s->rdbuf() == std::cout.rdbuf() ) { // this is cout or cerr into cout
_write( STDOUT_FILENO, 1, "\n" ); // do not convert line ending
return s; // stream is unbuffered, no need to flush
} else {
return std::endl( s ); // other streams do convert to \r\n
}
}
git checkout feature_branch_name
git pull origin master_branch_name
git merge
можно следовать ниже шагов
# step1: change branch to master, and pull to update all commits
$ git checkout master
$ git pull
# step2: change branch to target, and pull to update commits
$ git checkout feature
$ git pull
# step3: merge master to feature(⚠️ current is feature branch)
$ git merge master