Преобразование типов, помогите, а то меня прибьют
String* buf;
buf = ListBox2->SelectedItem->ToString();
int i = atoi((LPCTSTR)buf);
Выдается следующая ошибка преобразования типа:
test(wood) error C2440: 'type cast' : cannot convert from 'System::String __gc *' to 'LPCTSTR'
Так вот ситуация просто банальная надо из переменной типа System::String __gc * сделать переменную типа int
И так мужики есть следующая строчка:
String* buf;
buf = ListBox2->SelectedItem->ToString();
int i = atoi((LPCTSTR)buf);
Выдается следующая ошибка преобразования типа:
test(wood) error C2440: 'type cast' : cannot convert from 'System::String __gc *' to 'LPCTSTR'
Так вот ситуация просто банальная надо из переменной типа System::String __gc * сделать переменную типа int
А что за тип String?
CString, std::string?
Ну а если покопаться в форуме?
Можно найти такое:
T fromString(const std::string& s)
{
std::istringstream iss(s);
T res;
iss >> res;
return res;
}
Если даже это не std::string, то тип аргумента никто не мешает изменить, например, на const char*
И так мужики есть следующая строчка:
String* buf;
buf = ListBox2->SelectedItem->ToString();
int i = atoi((LPCTSTR)buf);
Выдается следующая ошибка преобразования типа:
test(wood) error C2440: 'type cast' : cannot convert from 'System::String __gc *' to 'LPCTSTR'
Так вот ситуация просто банальная надо из переменной типа System::String __gc * сделать переменную типа int
Че то я не понял. Список инциалзируется в программе и пользователь сам туды добавить ничего не сможет. Так нафиг те че то преобразовывать есл известно какие элементы у тя в списке.
Да действительно, список задается в программе, но мне все равно нужну получить целый тип значения который выберет пользователь в противном случаи я замучаюсь писать условия(там довольно мно значений).
Если написать что-то типа этого:
int i = buf->ToInt32();
Выведется следующая ошибка:
test(wood) error C2660: 'System::IConvertible::ToInt32' : function does not take 0 arguments
Ну не ужели меня ни кто не понимает, я использую МС7 из пакета Visual Studio 8.0
И так тип String - это стандартный класс С++.
Перерыл весь стандарт, такого "стандартного класса" не нашел.
По сему заявляю, что нет такого "стандартного класса" в С++.
Так о каком классе идет речь?
Ты случаем не .NET ли насилуешь? :)
CStrung str;
itoa( i, str.GetBuffer( sizeof(int) ), 10 );
//int в String
i = atoi(str);
// String в int
И так мужики есть следующая строчка:
String* buf;
buf = ListBox2->SelectedItem->ToString();
int i = atoi((LPCTSTR)buf);
Выдается следующая ошибка преобразования типа:
test(wood) error C2440: 'type cast' : cannot convert from 'System::String __gc *' to 'LPCTSTR'
Так вот ситуация просто банальная надо из переменной типа System::String __gc * сделать переменную типа int
To Green смотреть надо было VSDN->.NET Framework->Reference->Class Library->namespace System->String.
В общем то, что интересует недвижимого:
Структура System::Int32
Метод
public: static int Parse(
String* s,
NumberStyles style,
IFormatProvider* provider
);
Использовать .NET так использовать его полностью, а не переключаться на CRT и STL без явной необходимости.
Я пишу на Visual С++ из пакета Visual Studio 8.0 for NET. На счет стандартного класса подключается вот так
[COLOR=blue]#include <String>[/COLOR]
Я очень удивлюсь, что о нем ни кто ни знает.
Всем спаисибо я решил задачу, особое спасибо Ростиславу...
Я пишу на Visual С++ из пакета Visual Studio 8.0 for NET. На счет стандартного класса подключается вот так
[COLOR=blue]#include <String>[/COLOR]
Я очень удивлюсь, что о нем ни кто ни знает.
Дело в том, что этот класс не является стандартным классом С++, так же как и CString и AnsiString и т.п.
Этот клас из .NET, а .NET не входит в стандарт С++.
.NET - относительно новая и весьма специфичная технология, поэтому кто-то ещё с ней не знаком в полной мере, а кому-то она совсем не нужна. Поэтому и мало кто знает о классе String, что не так удивительно, чем незнание С++ программистом стандартного класса std::string.