string
просто псевдоним для System.String
. Компилятор будет рассматривать их тождественно.
единственным практическим различием является подсветка синтаксиса, как Вы упоминаете, и что необходимо записать using System
, если Вы используете String
.
Открытие файла в текстовом режиме должно привести к преобразованию std :: endl
в соответствующее окончание строки для вашей платформы. Ваша проблема в том, что новая строка подходит для вашей платформы, но файлы, которые вы создаете, не предназначены для вашей платформы.
Я не уверен, как вы планируете перегрузить или изменить endl
, и изменение его поведения, безусловно, удивит любого разработчика, который плохо знаком с вашим проектом. Я бы рекомендовал переключиться на win_endl (должен быть простой поиск и замена) или, возможно, переключиться со стандартного ostream
на поток фильтрации Boost.Iostreams , чтобы выполнить преобразование за вас .
std :: endl
в основном:
std::cout << "\n" << std::flush;
Так что просто используйте вместо него "\ r \ n"
и опустите сброс. Это тоже быстрее!
Из файла заголовка ostream на endl:
Этот манипулятор часто по ошибке используется, когда требуется простой перевод строки, что приводит к снижению производительности буферизации.
Не следует использовать \ r \ n. Просто используйте \ n, но затем откройте поток в «текстовом» режиме, который выполнит преобразование за вас. Возможно, вас не волнует кроссплатформенность, но это официальный способ сделать это.
Таким образом, один и тот же код будет выдавать \ n в unix, \ r \ n в Windows и \ r на Mac.
Блокнот Windows - это в значительной степени единственная программа Windows, которая, как вы обнаружите, не обрабатывает файлы только LF должным образом. Почти все остальное (включая WordPad) отлично обрабатывает файлы только LF.
Эта проблема - ошибка в Блокноте.
Вот мое решение проблемы. Это немного смесь всей информации, представленной в ответах:
Я создал макрос в файле win_endl.h для новой строки, которую я хотел:
#define win_endl "\ r \ n"
Затем я выполнил поиск и замену:
sheepsimulator @ Sheep \ _machine> sed -i 's / std :: endl / win_endl' *
И все мои файлы были включены win_endl.h
.