Преобразовать char* без нулевого завершения в intC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Преобразовать char* без нулевого завершения в int

Сообщение Anonymous »

Я работаю над кодом, который считывает файл данных. Файл часто содержит числовые значения различной длины, закодированные в ASCII, которые мне нужно преобразовать в целые числа. Проблема в том, что они не имеют нулевого завершения, что, конечно, вызывает проблемы с atoi. Решение, которое я использовал, состоит в том, чтобы вручную добавить ноль к последовательности символов, а затем преобразовать ее.

Это код, который я использовал; работает нормально, но кажется очень неуклюжим.

Код: Выделить всё

char *append_null(const char *chars, const int size)
{
char *tmp = new char[size + 2];

memcpy(tmp, chars, size);
tmp[size + 1] = '\0';

return tmp;
}

int atoi2(const char *chars, const int size)
{
char *tmp = append_null(chars, size);

int result = atoi(tmp);

delete[] tmp;

return result;
}

int main()
{
char *test = new char[20];
test[0] = '1';
test[1] = '2';
test[2] = '3';
test[3] = '4';

cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/8716293/convert-non-null-terminated-char-to-int[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»