[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

How to write a LPOLESTR to a text file?

Posted on 2004-04-13
3
Medium Priority
?
1,030 Views
Last Modified: 2012-06-21
I am very new to c++ and need to write a LPOLESTR to a text file.  Is this possible or do I need to convert it to something else?  Also, are there any specific header files I need to accomplish this?  I have already used the funtion StringfromCLSID to convert GUID's to printable strings but apparently they are not writable.  I can't import the fstream class for some reason also so I havn't used that.

This is the code segment -

// Execute the search
    hr = pSearch->ExecuteSearch(    pszSearch,
                                    rgAttributes,
                                    ARRAYSIZE(rgAttributes),
                                    &hSearch);
      cout << "Search Executed: " << hr << endl;
    if(SUCCEEDED(hr))
    {  
        FILE* myOutputFile;
        myOutputFile = fopen("c:\\TestWatch\\ADDeleted.txt", "w");
        // Call IDirectorySearch::GetNextRow() to retrieve the next row of data
        while(S_OK == (hr = pSearch->GetNextRow(hSearch)))
        {
            ADS_SEARCH_COLUMN col;
            UINT i;
           
            // Enumerate the retrieved attributes.
            for(i = 0; i < ARRAYSIZE(rgAttributes); i++)
            {
                hr = pSearch->GetColumn(hSearch, rgAttributes[i], &col);
                if(SUCCEEDED(hr))
                {      
                                                   
          switch(col.dwADsType)
                    {
                        case ADSTYPE_CASE_IGNORE_STRING:
                        case ADSTYPE_DN_STRING:
                        case ADSTYPE_PRINTABLE_STRING:
                        case ADSTYPE_NUMERIC_STRING:
                        case ADSTYPE_OCTET_STRING:
                            wprintf(L"%s: ", rgAttributes[i]);
                            LPOLESTR pStr;
                            for(DWORD x = 0; x < col.dwNumValues; x++)
                            {                                          
                                StringFromCLSID( (REFCLSID)col.pADsValues[x].OctetString.lpValue, &pStr );
                                                      // write to text file hear                                        fput(pStr, myOutputFile);
                                wprintf(L"%s" ,pStr);
                                CoTaskMemFree((LPVOID)pStr );
                                if((x + 1) < col.dwNumValues)
                                {
                                    wprintf(L",");
                                }
                            }
                            wprintf(L"\n");
                            break;
                    }

                    pSearch->FreeColumn(&col);
                }
            }

            wprintf(L"\n");
        }
            fflush(myOutputFile);
            fclose(myOutputFile);
        // Close the search handle to cleanup.
        pSearch->CloseSearchHandle(hSearch);
    }
0
Comment
Question by:misslinda454
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 86

Accepted Solution

by:
jkr earned 400 total points
ID: 10814440
An LPOLESTR basically is an UNICODE string. So, all you have to do is using the UNICODE file I/O functions, e.g.

        FILE* myOutputFile;
        myOutputFile = _wfopen(L"c:\\TestWatch\\ADDeleted.txt", L"w");


//...

                                StringFromCLSID( (REFCLSID)col.pADsValues[x].OctetString.lpValue, &pStr );
                                             // write to text file hear
                                    fputws(pStr, myOutputFile);

//...

          fflush(myOutputFile);
          fclose(myOutputFile);
0
 
LVL 4

Expert Comment

by:bkfirebird
ID: 10814461
here's a good article on how to convert OLE strings ....
http://www.devguy.com/fp/Tips/COM/bstr.htm
0
 

Author Comment

by:misslinda454
ID: 10814557
Thanks jkr that worked perfectly!
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
Introduction This article is the first in a series of articles about the C/C++ Visual Studio Express debugger.  It provides a quick start guide in using the debugger. Part 2 focuses on additional topics in breakpoints.  Lastly, Part 3 focuses on th…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
Suggested Courses

649 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question