strMessageText.Format("Error number %d", nError); 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

strMessageText.Format("Error number %d", nError);

Поиск

int nError = 23;

CString strMessageText;

strMessageText.Format("Error number %d", nError);

printf(strMessageText);

 

Непосредственно копировать участок строки в объект CString с помощью strcpy нет возможности. Для этого существует функция

LPTSTR CString::GetBuffer( int nMinBufLength )

фиксирующая текущую строку в буфере заданного размера nMinBufLength байт и возвращающая ссылку на этот буфер char*. С этой "фиксированной" в буфере строкой можно работать как с обычным массивом символов длины nMinBufLength. Чтобы потом вновь сделать строку динамической, вызовите функцию ReleaseBuffer. Пример:

 

CString strTest("test");

strcpy(strTest.GetBuffer(5),"T",1);

strTest.ReleaseBuffer();

 

Кроме того строки-массивы можно внедрять в CString в его конструкторе и с помощью таких операторов, как "+=" (см. первый пример на эту тему).

 

Специальный конструктор работает с функциями, принимающими ссылку на CString.Например, пусть прототип функции имеет вид:

 

BOOL TextOut( int x, int y, const CString& str );

 

тогда ее можно вызвать просто так:

 

TextOut(0,0,"Hello, world!");

 

Кроме того, часто бывает полезна функция GetLength(), возвращающая число символов в строке.

 

Если Вы пишете свою функцию, принимающую строковый параметр, учтите несколько правил.

 

· Если функция не меняет содержимое строки и Вы собираетесь работать со стандартными библиотечными функциями, такими как strcpy, используйте параметр const char*.

· Если функция не меняет содержимое строки, но Вы хотите вызывать в ней методы CString, используйте параметр const CString&.

· Если функция меняет содержимое строки, используйте параметр CString&.

 

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 44; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.176 (0.008 с.)