Share via

Using CString

The topics in this section describe how to program with CString. For reference documentation about the CString class, see the documentation for CStringT.

To use CString, include the atlstr.h header.

The CString, CStringA, and CStringW classes are specializations of a class template called CStringT based on the type of character data they support.

A CStringW object contains the wchar_t type and supports Unicode strings. A CStringA object contains the char type, and supports single-byte and multi-byte (MBCS) strings. A CString object supports either the char type or the wchar_t type, depending on whether the MBCS symbol or the UNICODE symbol is defined at compile time.

A CString object keeps character data in a CStringData object. CString accepts NULL-terminated C-style strings. CString tracks the string length for faster performance, but it also retains the NULL character in the stored character data to support conversion to LPCWSTR. CString includes the null terminator when it exports a C-style string. You can insert a NULL at other locations in a CString, but it may produce unexpected results.

The following set of string classes can be used without linking an MFC library, with or without CRT support: CAtlString, CAtlStringA, and CAtlStringW.

CString is used in native projects. For managed-code (C++/CLI) projects, use System::String.

To add more capabilities than CString, CStringA, or CStringW currently offer, you should create a subclass of CStringT that contains the additional features.

The following code shows how to create a CString and print it to standard output:

#include <atlstr.h>

int main() {
    CString aCString = CString(_T("A string"));
    _tprintf(_T("%s"), (LPCTSTR) aCString);

In This Section

Basic CString Operations
Describes basic CString operations, including creating objects from C literal strings, accessing individual characters in a CString, concatenating two objects, and comparing CString objects.

String Data Management
Discusses using Unicode and MBCS with CString.

CString Semantics
Explains how CString objects are used.

CString Operations Relating to C-Style Strings
Describes manipulating the contents of a CString object like a C-style null-terminated string.

Allocating and Releasing Memory for a BSTR
Discusses using memory for a BSTR and COM objects.

CString Exception Cleanup
Explains that explicit cleanup in MFC 3.0 and later is no longer necessary.

CString Argument Passing
Explains how to pass CString objects to functions and how to return CString objects from functions.

Unicode and Multibyte Character Set (MBCS) Support
Discusses how MFC is enabled for Unicode and MBCS support.


Provides reference information about the CStringT class.

CSimpleStringT Class
Provides reference information about the CSimpleStringT class.

Strings (ATL/MFC)
Contains links to topics that describe several ways to manage string data.

Strings (ATL/MFC)