Вот почему:
например есть функция
function funcstr(string s):integer;
Есть две переменные:
ii:integer;
ff:float;
Их надо конвертировать в число затем передать функции funcstr.
на delphi
придется писать
funcstr(IntToStr(ii));
funcstr(FloatToStr(ff));
Если охота форматирования есть другие функции;
на С же:
char str[??] // ?? обычно 100 — привычное "наверное хватит" со времен С
itoa(ii,str,10);
funcstr(str);
int decimal, sign;
char *buffer;
buffer = _ecvt(ff, 10, &decimal, &sign );
strcpy(str,buffer);
funcstr(str);
Или обратное преобразование:
StrToInt
StrToFloat
В случае ошибки кинут исключение EConvertError
в С
atoi
strtod
в С++
еще хуже
в знакомых мне библиотеках: MFC,STL..
во ВСЕХ классах со строками нет таких преобразований!
в MFC CSting есть функция с неопрделенныч числом параметров format -зачем делать разбор строки формата и неявные преобразования т.к ф-я с неопределенным числом параметров?
Решение половинчатое и преобразование только в дну сторону.Допустим CString->double как???
Решения основанные на потоках хоть переносимые но медленные.
С какой стати надо использовать поток если я хочу всего навсего преобразовать строку в число?
Не надо делать временные переменные типа str,str1...для того чтобы результат преобразования передать функции,
если ошибка — возбуждается исключение. Не надо проверять на ошибку возвращаемое значение.
Главное — они всегда есть в любом компиляторе дельфи сразу! Не надо искать какие то половинчатые решения для таких элементарны вещей а можно максимально сконцентрироваться на задаче, не создавать переменных которых не должно быть по логике вещей.
22.12.03 13:31: Перенесено модератором из 'Средства разработки' — ПК