none
有关Ibuffer^ 转 byte* 或者void*的求助(C++) RRS feed

  • 问题

  • 请问Ibuffer^ 转 byte* 或者void*该怎么转呢?

    auto openPicker = ref new FileOpenPicker();
    	openPicker->ViewMode = PickerViewMode::List;
        openPicker->SuggestedStartLocation = PickerLocationId::DocumentsLibrary;
        openPicker->FileTypeFilter->Append(".pdf");
    
    	task<StorageFile^>(openPicker->PickSingleFileAsync()).then([this](StorageFile^ openedFile)
    	{
    		if (openedFile != nullptr)
    		{
    			
    			task<IBuffer^>(FileIO::ReadBufferAsync(openedFile)).then([this](IBuffer^ buffer)
    			{
    	
    			});
    		}
    	});

    我只是想实现win32的fopen功能, FILE* m_iFileRead = fopen(lpszPathName, "rb");

    希望高手们指点一二,谢谢!


    • 已编辑 frglig 2012年4月6日 8:57
    2012年4月6日 8:55

答案

  • 通过摸索得到下面的方法,不知道正不正确。现分享出来,如有错误,欢迎指正!

    DataReader^ dataReader = DataReader::FromBuffer(buffer);
    				Array<unsigned char,1>^ myarray =ref new Array<unsigned char,1>(buffer->Length);
    				dataReader->ReadBytes(myarray);
    
    unsigned char * ch = myarray->begin();
    				unsigned char * ch2 = myarray->Data;

    2012年4月10日 0:44

全部回复

  • 通过摸索得到下面的方法,不知道正不正确。现分享出来,如有错误,欢迎指正!

    DataReader^ dataReader = DataReader::FromBuffer(buffer);
    				Array<unsigned char,1>^ myarray =ref new Array<unsigned char,1>(buffer->Length);
    				dataReader->ReadBytes(myarray);
    
    unsigned char * ch = myarray->begin();
    				unsigned char * ch2 = myarray->Data;

    2012年4月10日 0:44
  • 没错,我们可以通过 DataReader/DataWriter 来在 IBuffer 和 byte*, char[], string间转换。 官方的File Access sample 里面就用到了这个方式去将string转成IBuffer: File access sample


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年4月10日 9:01
    版主