Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > с CSting в int ???


Автор: Magistre 10.2.2005, 21:19
Код проги:
Код

void CAsdfbDlg::OnButton1()
{
UpdateData(TRUE);
CStdioFile file;
CString strText;
if(file.Open("asd",CFile::modeRead))
{
file.ReadString(strText);
m_edit1 = strText;
file.Close();
}
m_edit2 = m_edit1; //  <-- проблема вот тут  :stena
UpdateData(FALSE);
}

о проге:
m_edit1 = CSting
m_edit2 = int
как сделать так чтоб прога прочитала фаил и брала ево как int???
фаил состоит тока из цифр.

Автор: Coocky 10.2.2005, 22:06
есть функции itoa(...) и atoi()Они переводят текст в число и наоборот smile

Автор: IEZ 10.2.2005, 22:43
Примерно так.
Код

CString m_str=_T("12345");
int m_iNum;
m_iNum=atoi(m_str);
smile

Автор: Guest 10.2.2005, 22:58
хммм...
Пробовал ету тему smile неработает(или я просто настока тупои). Попробую обяснить что надо от проги.

Прога предстафляет из себя простои калькулятор. 2 стороки Edit и одна кнопка.
при откритии проги в первии едит идет то что написанно в фаиле асд.тхт(к примеру там написанна одна цифра "2"), во второи едит пишем луюбую цифру(к примеру "5") и нажимаем на кнопку. при нажатии он складивает еба едита и сохраняет результат в фаил асд.тхт(переписивая фаил). и при следуюшем откритии программи он снова пишет в первии едит то что в фаиле асд.тхт ( сас ето будет "7").

Проблема состоит в том что file.ReadString(strText); возвращает назад значение сорта CString даже если в фаиле написанни цифры. и ето делает невозможним следующую работу. так как сложить циври с первого едита(котории CString) и второго едита (котории int) невозможно =(.

Обясните как витащить из фаила ети цифри так чтоб они били в значении int.

Автор: Guest 10.2.2005, 23:02
Лююдиии спасиибо я разобралса хехе я неправильно использовал функцию atoi()

Автор: Coocky 10.2.2005, 23:04
Да как и написали,переведи строку в инт.У тебя что не работает,или компиль ругается?
Добавлено @ 23:05
Цитата
Лююдиии спасиибо я разобралса хехе я неправильно использовал функцию atoi()

Ну слава богу smile

Автор: Guest 23.2.2005, 01:42
Лучше использовать не atoi() & itoa(),а следующее:
Код

CString str;
int i;
str.Format(_T("%d"),i);

А для обратной функции написать свою:
Код

int CStrToInt(CString& str)
{

 //код потом напишу


}

Т.к. функции atoi() и itoa() использует непосредственный выделенный массив символов.
А для выделения этого массива используется некоторое время.

Автор: Spieler 5.1.2006, 16:19
Guest
Я пишу схожую прогу только без файла: вывожу результат сразу на едит.
Столкнулся с тойже проблемой.
ну проблемму преобразования числа в строку решил так:
Double x;
x=12.50;
Edit->Text=x.ToString;


Однако наоборот неполучается.
Было бы очень интерестно взглянуть на текст функции
int CStrToInt(CString& str)
{

//код потом напишу

}

Спасибо smile

Автор: DESert 5.1.2006, 23:47
можно еще так:
Код

int i; 
CString string;
sscanf( (LPCTSTR) string, "%d", &i );

Автор: SmarTi 23.7.2006, 23:29
А ещё такой вопрос: как узнать является ли строка набором из цифр ? пробовал функцию atoi, но она возвращает положительное значение даже если в строке всего несколько цифр, а всё остальное строковые символы.... подскажите кто знает.  

Автор: Earnest 24.7.2006, 07:53
Проверить каждый символ строки функцией isdigit. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)