Конвертировать string
в char *
std::vector<char> vec( str.begin(), str.end() );
vec.push_back( '\0' );
char * data = &vec[0];
Конвертировать string
в int
std::istringstream iss(str);
int i;
if( !iss >> i )
{
std::ostringstream oss;
oss << "Invalid conversion from " << str << " to integer";
throw std::invalid_argument( oss.str() );
}
Ваш второй ответ был близок к тому, как это сделать.Обратите внимание, что есть boost :: lexical_cast, который делает почти то же самое, но имеет огромный недостаток - бессмысленное исключение bad_cast, которое не дает контекстной информации и, следовательно, делает его практически бесполезным, на мой взгляд.