вопрос про char и CString
От: Susumanin Россия  
Дата: 19.10.02 08:04
Оценка:
Мне нужно переменную типа CString присвоить char[]. А как енто сделать не знаю. Помогите plz. Спасибо.
Re: вопрос про char и CString
От: Vasiliy_Krasnokutsky Россия  
Дата: 19.10.02 08:11
Оценка: -2
Здравствуйте Susumanin,
char k[100] = LPCTSTR(String);
Re[2]: вопрос про char и CString
От: Susumanin Россия  
Дата: 19.10.02 08:18
Оценка:
Здравствуйте Vasiliy_Krasnokutsky, Вы писали:

VK>Здравствуйте Susumanin,

VK>char k[100] = LPCTSTR(String);
Спасибо. Быстро работаете.
(извините за идиотский вопрос)
Re[2]: вопрос про char и CString
От: Андрей Россия  
Дата: 19.10.02 08:29
Оценка: 18 (1)
Здравствуйте Vasiliy_Krasnokutsky, Вы писали:

VK>Здравствуйте Susumanin,

VK>char k[100] = LPCTSTR(String);

И ты думаешь, это будет работать?

Правильнее будет так:

CString str;

...

TCHAR sz[100];
_tcsncpy(sz, LPCTSTR(str), 99);
sz[99] = 0;  // это нужно, если размер твоего sz меньше, чем длина строки str
Re[3]: вопрос про char и CString
От: Susumanin Россия  
Дата: 19.10.02 12:00
Оценка:
Здравствуйте Андрей, Вы писали:

А>Здравствуйте Vasiliy_Krasnokutsky, Вы писали:


VK>>Здравствуйте Susumanin,

VK>>char k[100] = LPCTSTR(String);

А>И ты думаешь, это будет работать?


А>Правильнее будет так:


А>
А>CString str;

А>...

А>TCHAR sz[100];
А>_tcsncpy(sz, LPCTSTR(str), 99);
А>sz[99] = 0;  // это нужно, если размер твоего sz меньше, чем длина строки str
А>


я посмотрел MSDN, а там подобных функций просто куча. Подскажите плиз какую лучше использовать. И вот для чего. У меня есть структура с char[]. Мне нужно заполнить ее данными из текстового поля диалогового окна. Я в классВизарде создаю переменную для моего текстового поля, а как заполнить структуру (вернее char[]) — не знаю.
Заранее спасибо!
Re[4]: вопрос про char и CString
От: Андрей Россия  
Дата: 19.10.02 12:10
Оценка:
Здравствуйте Susumanin, Вы писали:

skip

S>я посмотрел MSDN, а там подобных функций просто куча. Подскажите плиз какую лучше использовать. И вот для чего. У меня есть структура с char[]. Мне нужно заполнить ее данными из текстового поля диалогового окна. Я в классВизарде создаю переменную для моего текстового поля, а как заполнить структуру (вернее char[]) — не знаю.

S>Заранее спасибо!

Все зависит от того, как ты работаешь. Если ты пользуешься MFC, то почему бы в структуре не сделать поле типа CString?
Re[5]: вопрос про char и CString
От: Susumanin Россия  
Дата: 19.10.02 12:14
Оценка:
Здравствуйте Андрей, Вы писали:

А>Здравствуйте Susumanin, Вы писали:


А>skip


S>>я посмотрел MSDN, а там подобных функций просто куча. Подскажите плиз какую лучше использовать. И вот для чего. У меня есть структура с char[]. Мне нужно заполнить ее данными из текстового поля диалогового окна. Я в классВизарде создаю переменную для моего текстового поля, а как заполнить структуру (вернее char[]) — не знаю.

S>>Заранее спасибо!

А>Все зависит от того, как ты работаешь. Если ты пользуешься MFC, то почему бы в структуре не сделать поле типа CString?


Так весь прикол в том что мне потом все это нужно скинуть в файл. То есть это будет массив таких структур. Я использую CFile. А вот определять размеры каждой CString очень трудновато и мне показалось что будет легче сделать струтуру с фиксированными массивами char.
Re[6]: вопрос про char и CString
От: Андрей Россия  
Дата: 19.10.02 12:22
Оценка:
Здравствуйте Susumanin, Вы писали:

skip

S>Так весь прикол в том что мне потом все это нужно скинуть в файл. То есть это будет массив таких структур. Я использую CFile. А вот определять размеры каждой CString очень трудновато и мне показалось что будет легче сделать струтуру с фиксированными массивами char.


Ага, понял. Тогда остается _tcsncpy — как я тебе уже писал. То есть что-то типа:

void CYourDialog::SomeFunc()
{
  UpdateData();  // здесь ты получаешь текст из контрола в переменную типа CString

  // CharFieldSize - это размер твоего массива в СИМВОЛАХ - это важно для Unicode
  _tcsncpy(yourStruct.m_szCharField, m_str, CharFieldSize - 1);  // если ты не планируешь работать с Unicode,
                                                                 // то можно обойтись без макросов, а использовать strncpy
  yourStruct.m_szCharField[CharFieldSize - 1] = 0;
}
Re[7]: вопрос про char и CString
От: Susumanin Россия  
Дата: 19.10.02 12:25
Оценка: 18 (1)
skipped
Большое спасибо. Я попробую. Если что-то не получится, ничего если я опять спрошу что-нибудь ламерское?
Re[3]: вопрос про char и CString
От: Andrew S Россия http://alchemy-lab.com
Дата: 19.10.02 13:45
Оценка:
Только обычно пишуть так:

А>
А>CString str;

А>...

А>TCHAR sz[100];
А>_tcsncpy(sz, str, 99);
А>sz[99] = 0;  // это нужно, если размер твоего sz меньше, чем длина строки str
А>


Оператор LPCTSTR и так для CString автоматически вызывается компилятором...

Здравствуйте Андрей, Вы писали:

А>Здравствуйте Vasiliy_Krasnokutsky, Вы писали:


VK>>Здравствуйте Susumanin,

VK>>char k[100] = LPCTSTR(String);

А>И ты думаешь, это будет работать?


А>Правильнее будет так:


А>
А>CString str;

А>...

А>TCHAR sz[100];
А>_tcsncpy(sz, LPCTSTR(str), 99);
А>sz[99] = 0;  // это нужно, если размер твоего sz меньше, чем длина строки str
А>
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[6]: вопрос про char и CString
От: MaximE Великобритания  
Дата: 19.10.02 14:10
Оценка: 18 (1)
Здравствуйте Susumanin, Вы писали:

S>Так весь прикол в том что мне потом все это нужно скинуть в файл. То есть это будет массив таких структур. Я использую CFile. А вот определять размеры каждой CString очень трудновато и мне показалось что будет легче сделать струтуру с фиксированными массивами char.


По-моему, проще создать объект CArchive и пихать туда твои строки и другие данные с помощью оператора <<. И не надо будет определять размер каждой CString.
Все уже давно придумано
Re: вопрос про char и CString
От: Osco Португалия http://progs.biz
Дата: 19.10.02 20:22
Оценка: 3 (1)
Здравствуйте Susumanin, Вы писали:

S>Мне нужно переменную типа CString присвоить char[]. А как енто сделать не знаю. Помогите plz. Спасибо.


Через метод GetBuffer класса CString
Подробности см. тут:
http://progs.biz/vc/faq/lessons/006.shtml
Osco do Casco
Re: вопрос про char и CString
От: dandy  
Дата: 21.10.02 02:51
Оценка:
Здравствуйте Susumanin, Вы писали:

S>Мне нужно переменную типа CString присвоить char[]. А как енто сделать не знаю. Помогите plz. Спасибо.


D>

Например так:

char chStr[] = "Some text...";
CString csStr = "Other text...";
sprintf(chStr,(LPCSTR)csStr);

Есть вариант, например через strcat(...)
D>
Re[4]: вопрос про char и CString
От: Андрей Россия  
Дата: 21.10.02 03:29
Оценка:
Здравствуйте Andrew S, Вы писали:

skip

AS>Оператор LPCTSTR и так для CString автоматически вызывается компилятором...


Не всегда, увы Но в данном случае ты прав
Re: вопрос про char и CString
От: EugeneLed  
Дата: 06.09.05 10:16
Оценка:
Здравствуйте, Susumanin, Вы писали:

S>Мне нужно переменную типа CString присвоить char[]. А как енто сделать не знаю. Помогите plz. Спасибо.


А вот, если сделать так, то будет ли это работать? (самому нет возможности рповерить )


...
CString cstrTemp = "... ... ";
char buf[N];                          // допустим, N - размер, который известен
...
    strcpy( buf, (LPCSTR) &CString.Left(N) );
..,
Вот, что я Вам всем скажу...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.