Solved

Is there a size limit on _bstr_t type ?

Posted on 2004-09-09
1
1,301 Views
Last Modified: 2012-06-21
Hi,
 Consider the piece of code below:

_bstr_t test1("aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa");

_bstr_t test2("bbbbbbbbbb bbbbbbbbbb cccccccccc @@@@@@@@@@ bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb");

test1 += test2;



After the third step I expected the strings to be concatenated fully, but it doesnt work that way; the protion from ccccccc is not getting appended....any idea?

0
Comment
Question by:manoj_johar
[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
1 Comment
 
LVL 19

Accepted Solution

by:
drichards earned 250 total points
ID: 12024204
THere is a limit on the size of BSTR's, but it's at least 64K, and that was in 16 bit Windows.  The length is stored in a DWORD now, so if they let you use the whole thing, it's like 4 billion characters.  Much bigger than what you've got.

Anyway, try this code and look at things in the debugger.  I just added some length calculations.  When I run your code, I get the correct result.  If I run this modified version, I get "test1: 109, test2: 109, test1+test2: 218".

    _bstr_t test1("aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa");
    UINT l1 = ::SysStringLen(test1);

    _bstr_t test2("bbbbbbbbbb bbbbbbbbbb cccccccccc @@@@@@@@@@ bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb");
    UINT l2 = ::SysStringLen(test2);

    test1 += test2;
    UINT l3 = ::SysStringLen(test1);
    std::cout << "test1: " << l1 << ", test2: " << l2 << ", test1+test2: " << l3 << std::endl;

What do you get?
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Often, when implementing a feature, you won't know how certain events should be handled at the point where they occur and you'd rather defer to the user of your function or class. For example, a XML parser will extract a tag from the source code, wh…
  Included as part of the C++ Standard Template Library (STL) is a collection of generic containers. Each of these containers serves a different purpose and has different pros and cons. It is often difficult to decide which container to use and …
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

729 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