Страница 1 из 1
Из Cstring в int и обратно
Добавлено: 05 сен 2007, 21:40
Valtron
Недавно начал пользоватся VC++ 6, наткнулся на эту беду.
Как используя MFC конвертировать из Cstring в int и обратно.
Re: Из Cstring в int и обратно
Добавлено: 06 сен 2007, 02:11
Valtron
Сам задал вопрос, сам нашел и решение:
int i;
Cstring s;
i = atoi(s); // из строки в целое
s.Format("%i",i); // обратно
Re: Из Cstring в int и обратно
Добавлено: 27 фев 2011, 12:34
Artur_87
О, спасибо, я тоже как раз искал этот способ и нашел) Спс!
Re: Из Cstring в int и обратно
Добавлено: 01 мар 2011, 10:26
BBB
Тут тонкость в том, что если Cstring содержит строку, которая "не совсем число", то atoi преобразует то, "что сможет", т.е. до первого "ошибочного" символа. Если уже самый первый сивол строки - не цифровой, то результат будет 0.
Правильно такое поведение или нет - а черт его знает. Наверное, в зависимости от конкретных потребностей. Но помнить о таком поведении atoi следует.
Re: Из Cstring в int и обратно
Добавлено: 25 авг 2013, 12:48
MrCron
Делаю так же как написано выше, но у меня всё равно выдаёт ошибку.
myprodlg.cpp(333): error C2664: atoi: невозможно преобразовать параметр 1 из "CString" в "const char *"
Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
В чём проблема я не понимаю, подскажите кто знает.
Код: Выделить всё
void CMyProDlg::OnBnClickedButtonBegin()
{
int u;
CString s;
u = atoi(s);
}
Re: Из Cstring в int и обратно
Добавлено: 30 сен 2013, 19:18
Romeo
Преобразование, которые компилятор требует, как раз есть в классе CString. Если компилятор ругается, то скорее всего мы имеем дело с UNICODE проектом. Если так, то внутри CString у нас не char*, wchar_t*. В этом случае нас спасёт замена функции atoi на _wtoi.