2010-11-10 1 views
8

Что такое эквивалент C# для MFC CString?C++ эквивалент CString в C#

+4

'CString' - это класс MFC, который не является частью стандартного C++. Я соответствующим образом обновил этот вопрос. –

ответ

10

Возможно, System.String. Но в целях предоставления более полезной информации:

  • System.String экземпляры неизменяемы. Concatenation/substring/etc фактически создают новые строковые объекты, поэтому использование экземпляра строки в качестве буфера для создания вывода - это действительно плохая идея, если вы собираетесь это сделать. Подумайте о System.String как о const CString.
  • System.Text.StringBuilder Используется для создания и обработки строкового содержимого. Он имеет способ .ToString(), который вы можете вызвать, чтобы превратить его содержимое в нужную строку.
  • Вы можете использовать char[] в качестве альтернативы альтернатора строковых построек, если вы точно знаете, как долго будет создана сгенерированная строка, но даже при этом вы можете использовать new StringBuilder(length), чтобы указать начальную емкость по умолчанию. Затем вы можете использовать соответствующие методы добавления, не ограничиваясь индексной переменной. (StringBuilder делает это для вас.)

Как Билли упоминалось в другой ответ на этот вопрос, C# имеет ключевое слово string, которое по сути ярлык для System.String типа. Оба они полностью эквивалентны, хотя большинство кодеров будут LART, если вы используете форму в верхнем регистре.

+0

+1 - хотя я думаю, что вы имеете в виду StringBuilder, а не StringBuffer. –

+0

Да, на самом деле было исправлено это, когда вы печатали. :) – cdhowie

+1

'' большинство кодеров будут LART вы, если используете прописную форму «' что такое LART btw? – Inverse

2

Вы можете использовать String и посмотреть, не поможет ли это.

+1

Обратите внимание, что это имеет дополнительную поддержку в языке в форме строчной строки. –

2

Знаете ли вы, что CString не является ярким примером дизайна OO, выполненного правильно. MS продолжала добавлять к нему функции членов, пока не походила на швейцарский армейский нож ... пока все еще отсутствовала бессильная функция.

Все, что вы можете сделать с помощью CString, можно улучшить с помощью неизменяемого «System.String» и ряда классов поддержки.