Как сохранить файл с Visual C++ в формате UNIX

support.microsoft

При изменении исходных файлов в Visual C++ и сохранить их, строки должны завершаться символов "CR/LF" [символ возврата каретки, перевода строки] сочетание. В системах UNIX строк завершаются при помощи "LF". Таким образом, при просмотре файлы, которые были изменены в группе Windows в системах UNIX может появиться множество "^ M" символы в строках. Это происходит только при использовании редактора не знает, как интерпретировать файл Windows. Visual C++ можно открывать файлы, у строк, заканчивающихся с создания UNIX LF. Если изменить этот файл и Сохраните его из Visual C++, а затем оно сохраняется в формате Windows (вы увидите CR/LF и не LF, которая ранее была в системе).

В данной статье Описывает процедуры для сохранения измененного файла, созданного на платформе Windows в формате, который может использоваться в системах UNIX.

ПРИМЕЧАНИЕ: Visual C++.NET IDE содержит функции, доступные для сохранения файла в формате UNIX. В интегрированной среде разработки сохраните файл с помощью Сохранить как..., выберите из раскрывающегося списка сохранить Сохраните с кодировкой..., и нажмите кнопку thrn Да. Выберите из раскрывающегося списка Кодировка строки UNIX (LF), а затем нажмите кнопку ОК.

Можно использовать следующие шаги для создания консольного приложения Win32 проект, который преобразует файл, содержащий "CR/LF" для завершения строки для "LF":

  1. Чтобы создать новую с помощью консольных приложений Win32 пустой проект с именем DOS2UNIX.
  2. Из Файл меню, нажмите кнопку Новый, а затем нажмите кнопку Файлы Вкладка.
  3. Выберите Исходный файл C/C++ и введите имя нового файла DOS2UNIX.cpp.
  4. Вставьте следующий код в DOS2UNIX.cpp:
    #include<windows.h>
    #include<iostream>
    #include<fstream>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	if(argc !=2)
    	{
    		cout << "Please specify : dos2unix filename" << endl;
    		return 0;
    	}
    	char ch;
    	char temp[MAX_PATH]="\0";
    
    	//Open the file for reading in binarymode.
    	ifstream fp_read(argv[1], ios_base::in \ 
    		/ ios_base::binary);
    	sprintf(temp, "%s.temp", argv[1]);
    	//Create a temporary file for writing in the binary mode. This
    	//file will be created in the same directory as the input file.
    	ofstream fp_write(temp, ios_base::out \ 
    		/ ios_base::trunc \ 
    		/ ios_base::binary);
    
    	while(fp_read.eof() != true)
    	{
    		fp_read.get(ch);
    		//Check for CR (carriage return)
    		if((int)ch == 0x0D)
    			continue;
    		if (!fp_read.eof())fp_write.put(ch);
    	}
    
    	fp_read.close();
    	fp_write.close();
    	//Delete the existing input file.
    	remove(argv[1]);
    	//Rename the temporary file to the input file.
    	rename(temp, argv[1]);
    	//Delete the temporary file.
    	remove(temp);
    
    	return 0;
    }
    					
  5. Из Построение меню, нажмите кнопку Создание DOS2UNIX.exe для создания EXE-файла.

Может потребоваться проверить этот exe-файл, чтобы увидеть, если он работает правильно. Для этого откройте файл в двоичном редакторе Visual C++ При выборе Открыть в группе Файл меню, выбрав DOS2UNIX.ex, Настройка Открыть как Кому Двоичный, а затем щелкнув Открыть. Например, если файл содержит "hellocrlfworld", двоичный файл данные (шестнадцатеричный) будет выглядеть так:

48 65 6 C 6 C 6F 0 D 0A 57 6F 72 6 C 64

Это эквивалентно:

Привет
Мир

В командной строке выполните команду dos2unix.exe <file name=""></file> . Далее откройте файл в двоичном редакторе Visual C++. Вы увидите, что 0x0d s, удаляются. Пока не изменить файл и сохранить его в Visual C++ 0x0d s не появится.

Это можно использовать в сочетании с Модели автоматизации Visual C++ автоматизировать весь процесс. Простой Microsoft Visual Базовый сценарий макросов могут быть написаны для вызова данного средства, но сначала необходимо это средство добавить Сервис меню выглядит следующим образом:

  1. Из Сервис меню, нажмите кнопку Настройка, а затем нажмите кнопку Сервис Вкладка.
  2. Укажите имя, например DOS2UNIX, и укажите полный путь к файлу Dos2unix.exe в Команда поле редактирования.
  3. Задайте для аргумента, $(Filename)$(FileExt).
  4. Укажите исходный каталог $(WkspDir) (укажите свой собственный путь).

Для проверки работы программы, откройте файл в Visual C++ редактор, а затем из Сервис меню запуска DOS2UNIX средство. Вы увидите, что файл, открытый в редакторе были удалены все его символы CR.

Если необходимо автоматизировать этот процесс обработать таким образом, чтобы при каждом сохранении открытого файла в редакторе Visual C++ средство DOS2UNIX.exe вызывается для удаления 0x0d s, а затем используйте следующий макрос VBScript:

'This event is fired every time the document is saved in the VC++ Editor.
Sub Application_DocumentSave(theDocument)

'This will call the user tool in the Tools menu.
'Change the number depending upon what you have. By default you only
'have 6 tools under the Tools menu, so the DOS2UNIX tool will be the 7th.

ExecuteCommand "UserTool7" 

End Sub
				

Этот код VBScript будет работать только в том случае, если у вас есть файлы, открытые в Редактор Visual C++. Это единственный способ вызова exe-файл из VBScript макрос (макрос VBScript нельзя передать параметры). Можно написать в Вместо этого и это будет более гибким. Вызовите инструмент "DOS2UNIX.exe" из надстройки без необходимости добавлять его к Сервис меню.

В Visual C++ с использованием предоставленного VBScript макроса:

  1. Открыть существующий файл с расширением .dsm или создать один.
  2. Вставьте код, ранее приведенными в файл.
  3. В Visual C++ выполните следующие действия.
    1. Из Сервис меню, нажмите кнопку Настройка.
    2. Нажмите кнопку Файлы макросов и надстроек Вкладка.
    3. Нажмите кнопку Обзор загрузить файл .dsm, содержащий макрос. Один раз в файле .dsm был выбран в Обзор диалоговое окно, файл появится в Надстроек и макросов список файлов с помощью выбранного флажка рядом с ним.
    4. Нажмите кнопку Закрыть для продолжения.

Теперь, если открыть файл в редакторе Visual C++ и сохранить из файла Файл меню, вызываемого макроса и все 0x0d s будет удален из открытого файла. Так как это повлияет на любой файл, сохранить с этого момента ведется и применяются к любому проекту открыть в будущем, убедитесь, что отключить макрос из Сервис меню с помощью Настройка (снимите флажок рядом с макросом).

Если вы являетесь затем с помощью Microsoft Visual SourceSafe как средство управления исходного кода, см. следующую статью базы знаний:

170750  (http://support.microsoft.com/kb/170750/EN-US/ ) ИНФОРМАЦИЯ: Конец параметры символа строки для Visual SourceSafe

Страница сайта http://185.71.96.61
Оригинал находится по адресу http://185.71.96.61/home.asp?artId=27801