Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как разбить строку на символы?
V
    Опции темы
Данкинг
Дата 31.1.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Не сомневаюсь, что подобное неоднократно обсуждалось, но найти не смог. Суть вопроса: есть текстовое поле (EDIT). Требуется взять из него строку и посчитать сумму ASCII-кодов символов в ней. Вопрос с том, как мне разбить строку на символы??


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sartorius
Дата 31.1.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



 Чего то я MFC забыл уже ... у CString индексатор разве не перегружен?
PM MAIL ICQ   Вверх
Данкинг
Дата 31.1.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



В смысле, индексатор? Я С++ 2 недели изучаю, мне подробней желательно! smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sartorius
Дата 31.1.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 1
Всего: 37



Вобщем чего то такое
Код

CString str;
int sum = 0;
for(int i = 0; i < str.length(); i++)
{
    sum += str[i];
}

PM MAIL ICQ   Вверх
Данкинг
Дата 31.1.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Вот как я сделал, компилируется нормально, но при работе программа вылетает с "Access violation".

m_edit - это переменная, связанная с EDIT.

Код

void CTestDlg::OnButton2() 
{
UpdateData(true);
if (m_edit.GetLength()==0) 
{AfxMessageBox("Óêàæèòå íèê!");
}
else
{l=0;
 for(int j = 1; m_edit.GetLength(); j++)
  {
     l=l+m_edit[j];
 }


Э-э-э... Тут я понял, что Int приравниваю CString. А как получить ASCII-код символа?....

Это сообщение отредактировал(а) Данкинг - 31.1.2007, 21:52


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Greeen
Дата 1.2.2007, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Код

for(int j = 1; m_edit.GetLength(); j++)

Товаришч, у тебя тут бесконечный цикл получается.
Код

int nSumm = 0;
CString strText;
GetDlgItemText(IDC_YOUR_EDIT, strText);
for(int i = 0; i < strText.GetLength(); i++)
     nSumm += strText[i];



--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Nuzur
Дата 1.2.2007, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



Данкинг, Может лучше сначала еорию полистать?

Код

for(int j = 1; m_edit.GetLength(); j++)
  {
     l=l+m_edit[j];
 }


1. Начнем с того что индексация масива иден с 0-ля, что значит что в твоем варианте пропущен 1-й символ, который 0-й в масиве.
2. Access vioaltion ты получаеш поскольку в for 2-м пунктом идет условие окончание цИкла. А у тебя m_edit.GetLength() возвращяет длинну строки. Проще говоря если в строке хоть что-то есть продолжеть до боли в памяти smile
3. l=l+m_edit[j]; С паскаля переходиш? ЧитаБЕльней так l += m_edit[j];
4. От греха подале лучше все-таки переконвертить, незнаю параноя у меня нверно l += int(m_edit[j]);

Удачи!


--------------------
Never again...
PM MAIL   Вверх
Данкинг
Дата 1.2.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Насчёт индексации с нуля не понял: к примеру, в слова "строка" первая "с" - это нулевой символ получается, а не первый?

А в теории я мало чего понимаю, мне проще сразу осваивать на практических примерах, попутно понимая и теорию. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Nuzur
Дата 1.2.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: 3
Всего: 5



Данкинг, именно. Все индексы начинаются с 0-ля smile

ЗЫ Вел я как-то один проект после такого как ты. К его и моему счастью я не знал ни его имени ни как зовут. Иначе я б сел а он слег. Теория она для того и пишется что б люди понимали что делают. Ладно харе флудить.


--------------------
Never again...
PM MAIL   Вверх
Данкинг
Дата 1.2.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Угу, вопрос решён, всем спасибо! smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
cir
Дата 6.2.2007, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 22.4.2006

Репутация: нет
Всего: нет



k:=0; i:=1; for i:=1 to 5 do begin k:=k+2 end;

Добавлено @ 09:15 
Код

k:=0; i:=1; for i:=1 to 5 do begin k:=k+2 end; 


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0958 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.