Click here to Skip to main content
15,893,381 members
Articles / Desktop Programming / ATL

Non-MFC String Class for ATL

Rate me:
Please Sign up or sign in to vote.
4.20/5 (12 votes)
11 Aug 2000 258.9K   2.6K   33  
A Non-MFC String Class for use in ATL components
// TestString.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "COMString.h"

//////////////////////////////////////////////////////////////////////////////////////
//
// SPECIAL NOTES ABOUT THIS PROGRAM
//
// 1) The path in which you place the COMString.h and COMString.cpp must be included
//    in the INCLUDE and LIB paths under Visual C++.
// 2) This test program will not compile correctly under UNICODE due to the ATLTRACE
//	  macro.  If you wish to test under UNICODE, you can modify the string being used
//    in the ATLTRACE macro with the A2W macro.  For example,
//
//            ANSI Version:   ATLTRACE("%s\n", (LPCTSTR) szTest);
//		   UNICODE Version:   ATLTRACE("%s\n", A2W((LPCTSTR) szTest));
//
//////////////////////////////////////////////////////////////////////////////////////

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	MessageBox(NULL,
        _T("Output from this test program is in the debug output window of DevStudio"), 
        _T("Demo"), 
        MB_OK | MB_ICONINFORMATION);

    
    USES_CONVERSION;

	const TCHAR* testStr = _T("Just Testing");

	CCOMString szTest1(testStr);
	CCOMString szTest2(_T("Just Testing 2"));
	CCOMString szTest3(szTest2);
	CCOMString szTest4('A', 15);

	if (szTest4.IsEmpty())
		ATLTRACE("1)Empty\n");
	else
		ATLTRACE("1)Not Empty\n");

	szTest4.Empty();

	if (szTest4.IsEmpty())
		ATLTRACE("2)Empty\n");
	else
		ATLTRACE("2)Not Empty\n");

	ATLTRACE("3)");
	for (int i=0; i < szTest2.GetLength(); i++)
		ATLTRACE("%c|", szTest2[i]);
	ATLTRACE("\n");

	szTest2.SetAt(3, 'Z');
	szTest2.SetAt(5, 'Z');
	szTest2.SetAt(7, 'Z');

	ATLTRACE("4)");
	for (int y=0; y < szTest2.GetLength(); y++)
		ATLTRACE("%c|", szTest2[y]);
	ATLTRACE("\n");

	CCOMString szTest5(_T("Just Testing 2"));
	szTest5.MakeUpper();

	ATLTRACE("5)%s\n", szTest5.GetString());

	CCOMString szTest6(_T("Just Testing 2"));
	szTest6.MakeLower();
	ATLTRACE("6)%s\n", szTest6.GetString());

	CCOMString szTest7(_T("Just Testing 2"));
	szTest7.MakeReverse();
	ATLTRACE("7)%s\n", szTest7.GetString());

	CCOMString szTest8(_T("Just Testing 2          "));
	szTest8.TrimRight();
	ATLTRACE("8)%s", szTest8.GetString());
	ATLTRACE("|\n");

	CCOMString szTest9(_T("        Just Testing 2"));
	szTest9.TrimLeft();
	ATLTRACE("9)%s\n", szTest9.GetString());

	ATLTRACE("10)%d\n", szTest9.Find('t'));
	ATLTRACE("11)%d\n", szTest9.Find('t',6));

	CCOMString szTest10 = szTest9;
	ATLTRACE("12)%s\n", (LPCTSTR) szTest10);

	CCOMString szTest13 = szTest6.Mid(0,8);
	ATLTRACE("13)%s\n", szTest13.GetString());

	CCOMString szTest14 = szTest6.Mid(3,6);
	ATLTRACE("14)%s\n", szTest14.GetString());

	CCOMString szTest15 = szTest6.Right(6);
	ATLTRACE("15)%s\n", szTest15.GetString());

	CCOMString szTest16 = szTest6.Left(3);
	ATLTRACE("16)%s\n", szTest16.GetString());

	CCOMString szTest17 = szTest6.SpanIncluding(_T("just"));
	ATLTRACE("17)%s\n", szTest17.GetString());
	
	CCOMString szTest18 = szTest6.SpanExcluding(_T("st"));
	ATLTRACE("18)%s\n", szTest18.GetString());

	ATLTRACE("19)%d\n", szTest6.Compare(_T("Just Testing")));
	ATLTRACE("20)%d\n", szTest6.Compare(szTest6));

	ATLTRACE("21)%d\n", szTest6.CompareNoCase(_T("JUST TESTING 2")));
	ATLTRACE("22)%d\n", szTest6.Compare(szTest3));

	CCOMString szTest23;
	szTest23.Format(_T("%s, %s, %s"), _T("This"), _T("is a"), _T("Test"));
	ATLTRACE("23)%s\n", (LPCTSTR) szTest23);

	CComBSTR bstrTemp = _T("This is a BSTR");
	CCOMString szTest24(bstrTemp);
	ATLTRACE("24)%s\n", (LPCTSTR) szTest24);

	BSTR bstrTemp2 = szTest6.AllocSysString();
	ATLTRACE("25)%s\n", OLE2T(bstrTemp2));
	SysFreeString(bstrTemp2);

	CCOMString szTest26 = _T("This is a LPCTSTR Assignment");
	ATLTRACE("26)%s\n", (LPCTSTR) szTest26);

	CComBSTR bstrTemp3 = _T("This is a BSTR Assignment");
	CCOMString szTest27 = bstrTemp3;
	ATLTRACE("27)%s\n", (LPCTSTR) szTest27);

	CCOMString szTest28 = szTest26;
	ATLTRACE("28)%s\n", (LPCTSTR) szTest28);
	
	CCOMString szTest29 = szTest26 + szTest27;
	ATLTRACE("29)%s\n", (LPCTSTR) szTest29);

	CCOMString szTest30;
	szTest30 += (LPCTSTR) szTest26;
	szTest30 += _T(";");
	szTest30 += (LPCTSTR) szTest27;
	szTest30 += _T(";");
	szTest30 += bstrTemp3;
	ATLTRACE("30)%s\n", (LPCTSTR) szTest30);

	return 0;
}



By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Software Developer (Senior)
United States United States
Eat, Sleep, Code, Bike. That about sums it up!!

Comments and Discussions