Преобразование ВАЛЮТЫ в длинную - PullRequest
0 голосов
/ 02 августа 2011

Как я могу преобразовать тип CURRENCY в тип long?

Мне нужно это сделать, потому что я хочу поместить значение типа CURRENCY в sprintf, используя% d

Мне трудно с этим, помощь приветствуется:)

Ответы [ 3 ]

1 голос
/ 02 августа 2011

Я предполагаю, что вы хотите преобразовать значение CURRENCY в long.Как видно из документации, валюта - это просто 64-битное целое число, в котором хранится 1/10000 тысячной единицы.Под единицей я подразумеваю доллар, британский фунт, евро и т. Д. Не копейки, центы и тому подобное.Все, что вам нужно сделать, это сделать: long value = (long)currency.int64.Помните, что если значение в элементе int64 больше LONG_MAX или меньше LONG_MIN, вы получите ошибки усечения.

Зачем вам нужно конвертировать значение в long?Вы не можете использовать союз CURRENCY как есть?

0 голосов
/ 02 августа 2011

CURRENCY - это класс, который определен где-то в вашем коде (т.е. это не нативный тип C ++).

Ваш класс может уже иметь возможность привести к int (или long), если он написан кем-то другим. Вы можете попытаться выяснить это путем (1) чтения файлов заголовков или (2) компиляции этого

    CURRENCY mymoney;
    printf("%d",static_cast<long>(mymoney));

и посмотрите, позволит ли компилятор вам сойти с рук - и если это произойдет, то, скорее всего, для класса уже определен оператор приведения.

Многие люди не любят, когда вы используете sprintf в коде C ++, но предпочитают использовать потоки. Если это так, то вместо этого может быть определен оператор << - вы можете попытаться определить это путем (1) чтения включаемых файлов или (2) компиляции этого кода

    CURRENCY mymoney;
    std::cout << mymoney << std:: endl;

Если нет, возможно, вам придется написать код для перегрузки <<operator и / или оператора длинного приведения в классе Currency, чтобы вернуть значения, необходимые для вывода потока и приведения к другим типам.

0 голосов
/ 02 августа 2011

Если валюта является строкой, вы можете использовать

sscanf(currency, "%d", &myLong);

Если это какой-либо другой базовый тип данных, вы можете просто набрать, например,

long myLong = (long)currency;

Если у вас есть большеинформацию о типе данных, пожалуйста, отредактируйте ее в своем посте.

...