Partilhar via


CString Aprovação de Argumentos

Observação

A biblioteca Microsoft Foundation Classes (MFC) e a Active Template Library (ATL) continuam a ser suportadas. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Este artigo explica como passar CString objetos para funções e como devolver CString objetos a partir de funções.

CString Argument-Passing Convenções

Quando defines uma interface de classes, deves determinar a convenção de passagem de argumentos para as tuas funções membro. Existem algumas regras padrão para passar e devolver CString objetos. Se seguires as regras descritas em Strings como Function Inputs e Strings como Function Outputs, terás código eficiente e correto.

Cordas como entradas de função

A forma mais eficiente e segura de usar um CString objeto em funções chamadas é passar um CString objeto para a função. Apesar do nome, um CString objeto não armazena internamente uma string como uma string do estilo C que tem um NULL terminador. Em vez disso, um CString objeto mantém um registo cuidadoso do número de caracteres que tem. Ter CString um LPCTSTR ponteiro para uma NULLstring terminada em -terminado é um trabalho pequeno que pode tornar-se significativo se o teu código tiver de o fazer constantemente. O resultado é temporário porque qualquer alteração no CString conteúdo invalida cópias antigas do LPCTSTR apontador.

Faz sentido, em alguns casos, fornecer uma corda ao estilo C. Por exemplo, pode haver uma situação em que uma função chamada está escrita em C e não suporta objetos. Neste caso, coagem o CString parâmetro para LPCTSTR, e a função obterá uma cadeia terminada em estilo NULLC. Também podes ir na direção oposta e criar um CString objeto usando o CString construtor que aceita um parâmetro string ao estilo C.

Se o conteúdo da cadeia for alterado por uma função, declare o parâmetro como uma referência não constante CString (CString&).

Strings como saídas funcionais

Normalmente podes devolver CString objetos de funções porque CString os objetos seguem semântica de valores como tipos primitivos. Para devolver uma cadeia de apenas leitura, use uma referência constante CString (const CString&). O exemplo seguinte ilustra a utilização de parâmetros e tipos de CString retorno:

class CName : public CObject
{
private:
   CString m_firstName;
   TCHAR m_middleInit;
   CString m_lastName;
public:
   CName() {}
   void SetData(LPCTSTR fn, const TCHAR mi, LPCTSTR ln)
   {
      m_firstName = fn;
      m_middleInit = mi;
      m_lastName = ln;
   }
   void GetData(CString& cfn, TCHAR& mi, CString& cln)
   {
      cfn = m_firstName;
      mi = m_middleInit;
      cln = m_lastName;
   }
   CString GetLastName()
   {
      return m_lastName;
   }
};

 

CName name;
CString last, first;
TCHAR middle;
name.SetData(_T("John"), 'Q', _T("Public"));
ASSERT(name.GetLastName() == _T("Public"));
name.GetData(first, middle, last);
ASSERT((first == _T("John")) && (last == _T("Public")));

Consulte também

Cordas (ATL/MFC)