Подтвердить что ты не робот

Что такое `CString`?

Почему я вижу, что какой-то код с использованием CStrings объявлен по-разному.

Некоторые используют этот формат

char a_c_string [];

В то время как другие используют

CString another_c_string;

Есть ли разница? Все ссылки, которые я нашел в CStrings, объявляют так, как я сделал в первом примере, я видел, как это делалось на форумах и т.д., Где люди приводят примеры.

4b9b3361

Ответ 1

CString не является ни C, ни С++. Похоже, это изобретение Microsoft, которое по существу является альтернативой std::string:

  • CString объекты могут расти в результате операций конкатенации.
  • CString объекты следуют за семантикой значений. Подумайте об объекте CString как о фактической строке, а не как о указателе на строку.
  • Вы можете свободно заменить объекты CString на аргументы функции const char* и LPCTSTR.
  • Оператор преобразования дает прямой доступ к строковым символам в виде массива символов только для чтения (строка стиля C).

Я рекомендую игнорировать его, чтобы:

(a) люди знают, о чем вы говорите;
(b) ваш код переносится;
(c) вы пишете С++, который каждый может рационализировать в соответствии со всемирно принятым стандартом ISO С++, который многие, многие люди проводят много и много часов, обсуждая эту цель (вы знаете, в отличие от нескольких парней в комната в одном офисе компании).

Он будет доступен только при программировании с Microsoft Visual С++, что существенно ограничивает.

Ответ 2

Многие графические интерфейсы GUI имеют свой собственный класс строк. например QT имеет QString, wxWindows имеет wxString. В этом случае MFC имеет CString. Тогда это удобно и имеет смысл использовать CString, когда в контексте кода MFC gui, потому что тогда вы уже сильно зависите от Visual С++, а переносимость кода не будет предусмотрена. Я был бы осторожен в заявках, говорящих, чтобы игнорировать его, потому что он нестандартен - все зависит от контекста.

Ответ 3

На всякий случай, что причина путаницы: "C" в "CString" - это только префикс, который имеют все классы из MFC. MFC является библиотекой С++ Microsoft, завершающей API win32. Этот класс строк имеет мало общего с "C-строками", который используется для описания средств обработки строк, которые предоставляет язык C. Язык C предоставляет только функции для обработки строк, которые работают с указателем на массив char, представляющий строку, и они требуют, чтобы последний символ был NUL (также называемый NUL-терминалом или с нулевым завершением). Обратите внимание, что сам С++ также имеет класс строк std::string (ну, на самом деле там также std:: wstring и std:: basic_string, но как новичок вы можете смело игнорировать их).

Ответ 4

CString используется в Visual С++.

Visual С++ - это Microsoft реализация С++