Numpy `.view` функция в C ++ - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь преобразовать строку в int32 в C ++.В Python я обычно делал:

import numpy as np
str = "HELLO"
np.array([str]).view(np.int32)

Это приводит к:

array([72, 69, 76, 76, 79], dtype=int32)

т.е. ord каждого символа.

Как мне достичьто же самое в C ++?

PS Я не ищу способ в стиле Numpy для этого.Но, ищем возможные способы получения таких же результатов.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Вы можете сделать что-то вроде:

auto arr = new int32_t[str.length()];

Затем используйте std::transform как:

std::transform(str.begin(), str.end(), arr, [](char chr) -> int32_t { return int32_t(chr); });
0 голосов
/ 31 марта 2019

В Python это то, что он делает:

>>> import numpy as np
>>> str = "HELLO"
>>> np.array([str]).view(np.int32)
array([72, 69, 76, 76, 79])

В C / C ++ "HELLO" уже то же самое, что и [72, 69, 76, 76, 79]!

static const char *s = "HELLO";
printf("%d\n", s[0]);   // prints 72
printf("%d\n", s[1]);   // prints 69
int x = s[2];   // x is now 76
printf("%d\n", x);   // prints 76
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...