Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2013, 00:56   #1
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию char в MFC

Подскажите как работать грамотно с char в MFC, грубо говоря мне нужно в CEdit ввести строку и посчитать пробелы, пробовал такими методами:

Код:
CString str = "test one";
	CString str_1= "test two";
	LPTSTR pszText = str_1.GetBuffer(200); 
	str_1.ReleaseBuffer();
пишу цикл для проверки
Код:
for(int i =0; i < 5; i++){
		if(pszText == " ") {                            
			AfxMessageBox(pszText);
		}
так прокатывает, но не чего естественно не выдает, т.к pszText является строкой, а вот так
Цитата:
for(int i =0; i < 5; i++){
if(pszText[i] == " ") {
AfxMessageBox(pszText);
}
выдает ошибку
Цитата:
error C2446: '==' : no conversion from 'const char *' to 'int'
error C2040: '==' : 'int' differs in levels of indirection from 'const char [2]'
хотя в отладчике вижу что pszText[i] - нормально читает по буквам строку и такая же штука с вторым примеров

Код:
char *ch = new char[str.GetLength()+2];
strcpy(ch,str);
цикл
Цитата:
for(int i =0; i < 5; i++){
if(ch[i] == ""){
AfxMessageBox(ch);
}
}
и вот ошибки
Цитата:
error C2446: '==' : no conversion from 'const char *' to 'int'
error C2040: '==' : 'int' differs in levels of indirection from 'const char [2]'
в интернете не чего дельного не нашел, хотя темы были.
Если ли у кого дельные предложения?
Тёма_) вне форума Ответить с цитированием
Старый 07.03.2013, 01:23   #2
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

попытался решить проблему через GetBufferSetLength, таким методом
Цитата:
CString str = ("хоккей является лучшим спортом! ");
for(int i = 0; i < 8; i ++){
LPTSTR pstr = str.GetBufferSetLength(1+i);
if( pstr == "k") {
pstr[0] = 'I';

pstr[1] = 'c';

pstr[2] = 'e';}
}
тоже безрезультатно, GetBufferSetLength как встал на 1 символе, так и стоит на нем весь цикл, обращение типо if( pstr[i] == "k"), тоже не катит
Тёма_) вне форума Ответить с цитированием
Старый 07.03.2013, 08:53   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

" " это не пробел, это строка с одним символом пробела (разницу между char и char* чуствуете?).
Либо пишите " "[0] (дикость, но правильно), либи просто ' ' (то же самое что у вас но с одинарными кавычками)
waleri вне форума Ответить с цитированием
Старый 07.03.2013, 17:19   #4
Тёма_)
Пользователь
 
Регистрация: 12.11.2011
Сообщений: 68
По умолчанию

Большое спасибо)) все работает))
Тёма_) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
char * conver (char *somestr) вылетает с exception mosq Общие вопросы C/C++ 2 23.02.2013 02:23
Drag&Drop NO MFC! NO MFC! Антоним Win Api 1 12.11.2012 21:43
как исправить ошибку invalid conversion from const char* to char Ника К Помощь студентам 5 01.06.2012 00:13
Проблема с программой. Нельзя преобразовать тип set of char к char Lasso Помощь студентам 5 07.06.2011 12:03
Есть таблица - В ней три поля int, char, char нужно чтобы данные заносились в таблицу Mysql Muahahaha PHP 8 27.03.2008 11:17