2013-04-10 2 views
0

У меня проблемы с win32. Я должен написать некоторые динамические данные в файл в win32 с помощью C++. Я знаю основы того, как писать строки в файл, но как мы можем записать данные из ints, floats и т. Д. В файл.Запись динамических данных в файлы в win32

У меня есть файл, который я копирую данные в другой вновь созданный файл. Мне нужно записать данные ints, float и т. Д. В этот файл наверху. Я знаю, что мы можем добавить данные по

char buff[] = "hello"; 

и скопировать это в файл, я не знаю, как я могу сделать это с различными видами типов данных. Любая помощь?

char buf[] = "hello"; //Null terminate 
LPVOID lpMsgBuf; 
DWORD byteWritten = 0; 
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); 
BOOL ReadFileReturn; 

HANDLE hFile = CreateFile("MYFILE.blo", // open MYFILE.blo 
      GENERIC_WRITE | GENERIC_READ,    
      FILE_SHARE_READ,    // share for reading 
      NULL,       // no security 
      OPEN_EXISTING,     // existing file only 
      FILE_ATTRIBUTE_NORMAL,   // normal file 
      NULL);       // no attr 
ReadFileReturn = ReadFile(hFile,buf,30,&byteWritten,NULL);  
if(ReadFileReturn) 
{ 
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, 
        NULL, 
        GetLastError(), 
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language 
       (LPTSTR) &lpMsgBuf, 
        0, 
        NULL); 
    WriteFile(hStdOut,buf,sizeof buf,NULL,NULL); 

} 
else 
{ 
    WriteFile(hStdOut,"It Failed",sizeof "It Failed",NULL,NULL); 

} 
+0

Возможно, вы обнаружили недоумение о том, как вы хотите хранить свои данные. Можете ли вы опубликовать пример того, какой механизм вы пишете строку в файл? –

ответ

1

Это зависит от того, как вы открываете свой файл (в каком режиме на самом деле). Если вы открыли их в текстовом режиме, все, независимо от его типа, будет записано в виде строки/текста. В противном случае вы можете открыть файл в двоичном режиме. В этом режиме int будет записан как int, float будет записано как float и т.д.

Вот ссылка для описания разницы между обоими типами файлов http://www.fileinfo.com/help/binary_vs_text_files

Вы можете, возможно, попробовать что-то вроде:

char str[80] = ""; 
int a = 1, b = 2; 
int n = sprintf(str, "%d", a+b); 
DWORD bytesWritten; 
WriteFile(fileHandle, str, strlen(str), &bytesWritten, NULL); 
+0

Извините, но мне нужен этот win32. Я копирую двоичные данные в другой файл и добавляю значения. Как это сделать в win32? – nullPointer2

+0

Должен ли я использовать WriteFile для каждого типа данных? – nullPointer2

+0

Я бы подумал, что использование интерфейса файлов C++ является лучшим выбором. Упрощен и более последователен. –

0

Проверьте это:

http://www.cplusplus.com/reference/ostream/ostream/write/

Так в основном вы делаете это:

.... 
std::ofstream myfile("filename"); 
double my_data = 15; 
myfile.write(static_cast< const char*>(&my_data), sizeof(double)); 
... 

Предыдущий фрагмент кода немного сырой, вам может понадобиться, чтобы проверить такие вопросы, как порядок байтов и выравнивание.

Смежные вопросы