如何循环BSTR?

时间:2015-10-09 14:01:58

标签: c++ visual-c++

我有一个包含很多charechter的BSTR。

        BSTR theFile = NULL;
        int res = comSmartspeak -> readTheFile(fileName, &theFile);

我想阅读第一行,我不知道该怎么做。

这是我提出的伪代码:

        string firstLine = "";
        for (int i = 0; i < SysStringLen(theFile) ; i++)
        {
            if (theFile[i] == '\n')
            {
                break;
            }else
            {
                firstLine += theFile[i] ;
            }
        }

我是VC ++的新手。

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情,假设你可以自由地使用std :: wstring,这样你就不必事先计算第一行的长度:

#include <Windows.h>
#include <iostream>
#include <string>

int main()
{
    BSTR a_bstr = ::SysAllocString(L"First line of text\nSecond line of text\nThird line of text\nFourth line of text...");
    std::wstring wide_str;
    unsigned int len = ::SysStringLen(a_bstr);
    for (unsigned int i = 0; i < len; ++i)
    {
        if (a_bstr[i] != '\n')
            wide_str += a_bstr[i];
        else
            break;
    }

    // wide_str holds your first line
    std::wcout << "First line: " << wide_str << std::endl;
    ::SysFreeString(a_bstr);
    return 0;
}