Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со строкой 
:(
    Опции темы
KIDD
Дата 14.5.2004, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Товарищи помогите!

Предположим у меня есть строка
CString str;
я в нее считываю строку "1-12-13-2-4"
Теперь мне ее нужно прочитать, но по частям:
как 1,
затем читаю 12
13
....

мне они нужны как отдельные числа,
Цепочка может быть любой длины, и цифры могут быть длинными 1хххххх ограниенный возможностями Int

Все это в MFC


Заранее спасибо





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


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



самый простой способ -- ищи символ "знак минус" и читай все символы после него до следующего знака минус и преобразуй в int
Код
int StrToInt(
   LPCTSTR lpSrc
);

(только для Internet Explorer 4.0 и выше )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
sergejzr
Дата 14.5.2004, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Была похожая проблема, Можно воспользоваться:
http://forum.vingrad.ru/index.php?act=ST&f...ndpost&p=142926
код можешь весь перенять, но функцию main замени на:
Код

#include <stdlib.h>
int main()
{
char line[300];
char* stroki[50];
int resultat[50];
int i;
//подготовим Line
sprintf(line,"%s","12-45-3-21-55");
*stroki=0;

divide(line,"-",stroki);

for(i=0;stroki[i]!=0;i++)
{
/*
Здесь и происходит преобразование в число.
*/
resultat[i]=atol(stroki[i]);
printf("%i  '%i'\n",i,resultat[i]);
}
return 0;
}




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
KIDD
Дата 14.5.2004, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



на функцию strtoint, у меня выскакивает ошибка, странно, у меня полная версия .Net

А во втором варианте у меня возникает сомнение на счет работы этой функции со СString, уж очень там намудрено в divide.
А нет какого другого варианта?

Sergeu и hunteru спасибо за ответы.
PM MAIL   Вверх
_hunter
Дата 14.5.2004, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



ты регистр, надеюсь, учел?
Цитата
Minimum DLL Version shlwapi.dll version 4.71 or later
Custom Implementation No
Header shlwapi.h
Import library shlwapi.lib
Minimum operating systems Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0

адрес на MSDN:
http://msdn.microsoft.com/library/default....ng/strtoint.asp



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
sergejzr
Дата 14.5.2004, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



вместо strToIn () можно

Код
#include <stdlib.h>
int x=atol("3");



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
KIDD
Дата 15.5.2004, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, я нашел более легкий способ, через с-шную функцию strtok
Цитата

CString str;
char string[40];//буфер
int z;//
char *tok;

GetDlgItemText(IDC_EDIT1,str);//копирование в string


StrCpy(string,str);// копирование в string  типа  char, т.к. strtok глючит, если напрямую в нее пихать считанный  CString.

tok=strtok(string,"-");// функция разбиения
 
while(tok!=NULL)
{
            z=atoi(tok);//перевод в int номера
            str.Format(_T("%d"),z);//вывод номера
            _list.AddString(str);
            tok=strtok(NULL,"-");
} 


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


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Классно. я не знал!
Спасибо, что поделился решением!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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