Я хочу, чтобы преобразовать unsigned const char *
в char const *
для передачи в strcpy
функцииТип литой из знака Const символ * обугливаться сопзом *
Пожалуйста, предложите какой-то метод
Я хочу, чтобы преобразовать unsigned const char *
в char const *
для передачи в strcpy
функцииТип литой из знака Const символ * обугливаться сопзом *
Пожалуйста, предложите какой-то метод
Это работает для меня; это то, что вы имели в виду?
#include <stdio.h>
#include <string.h>
int main(int argc, char ** argv)
{
const char foo[] = "foo";
unsigned const char * x = (unsigned const char *) foo;
char bar[20];
strcpy(bar, (const char *)x);
printf("bar=[%s]\n", bar);
return 0;
}
Обратите внимание, что если вы вместо того, чтобы пытаться передать (без знака константный символ *) указатель в первом аргументе STRCPY, тогда вы, вероятно, пытается сделать что-то вы не должны (и компилятор правильно маркируют его как ошибка); потому что strcpy() будет записывать в память, на которую указывает первый аргумент, а указатель const - это указатель, данные которого не должны записываться.
В ANSI CI считает, что должно работать, например:
#include <string.h>
int main() {
const char *s="test";
unsigned const char *d = s;
char dest[1000];
strcpy(dest,d);
}
Вы могли бы попробовать добавить роли:
#include <string.h>
int main() {
const char *s="test";
unsigned const char *d = s;
char dest[1000];
strcpy(dest,(const char *) d);
}
(const char *) my_signed_char
В C++ есть более идиоматические способы отлитые, но поскольку вы используете strcpy, вы не программируете идиоматический C++.
Теперь получение ошибки «незаконный литье» – Sijith
«Теперь получить ошибку» - что вы подразумеваете под «сейчас»? Что вы сделали - где ваш код? Не могли бы вы добавить все это к вопросу (не в комментариях)? – jogojapan