2013-02-20 1 views
4

Я хочу, чтобы преобразовать unsigned const char * в char const * для передачи в strcpy функцииТип литой из знака Const символ * обугливаться сопзом *

Пожалуйста, предложите какой-то метод

+0

Теперь получение ошибки «незаконный литье» – Sijith

+1

«Теперь получить ошибку» - что вы подразумеваете под «сейчас»? Что вы сделали - где ваш код? Не могли бы вы добавить все это к вопросу (не в комментариях)? – jogojapan

ответ

1

Это работает для меня; это то, что вы имели в виду?

#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 - это указатель, данные которого не должны записываться.

1

В 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); 
} 
7
(const char *) my_signed_char 

В C++ есть более идиоматические способы отлитые, но поскольку вы используете strcpy, вы не программируете идиоматический C++.

Смежные вопросы