Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/41: Рейтинг темы: голосов - 41, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 02.12.2008
Сообщений: 23
1

Невозможно преобразовать "const char" в "char"

06.09.2009, 10:01. Показов 7959. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
void vvod()
{
    char name_of_file[100];
    int i;
    char linetype1[50];
    char linetype2[50];
    int razmer_pera;
    struct colour
    {
        int red;
        int green;
        int blue;
    };
    colour colour_of_pen;
    printf("Введите путь к файлу");
    scanf("%s",&name_of_file);
    fp=fopen (name_of_file, "r");
    if (fp==NULL)
    {
        perror("fopen");
        exit(1);
    }
    for(i=0;i<4;i++)
    {
        fscanf(fp, "%d", &coordinate[i][0]);
        fscanf(fp, "%d", &coordinate[i][1]);
    }
    fscanf(fp,"%s",&linetype1);
    if (linetype1 == "sploshnaya") 
        linetype2 = "PS_SOLID";
    if (linetype1 == "punktir")
        linetype2 = "PS_DASH";
    if(linetype1 == "shtrih")
        linetype2 = "PS_DOT";
    if (linetype1 == "shtrihpunktir1")
        linetype2 = "PS_DASHDOT";
    if (linetype1 == "shtrihpunktir2")
        linetype2 = "PS_DASHDOTDOT";
    if (linetype1 == "nevidimaya")
        linetype2 = "PS_NULL";
    if (linetype1 == "obvodka")
        linetype2 = "PS_INSIDEFRAME";
    
    fscanf(fp,"%d",&razmer_pera);
 
 
 
 
    fclose(fp);
}
Visual 2008 ругается такой ошибкой:
error C2440: =: невозможно преобразовать 'const char [9]' в 'char [50]'
1> Не существует контекста, в котором такое преобразование возможно

и таких семь штук.

В чем ошибка? Почему я не могу вставить в массив строку?

P.S. Если linetype2 определить как const char - все равно не помогает...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2009, 10:01
Ответы с готовыми решениями:

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *'
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void...

Ошибка С2440 - невозможно преобразовать const char [8] в char*
Здравствуйте! При решение упражнение по книжке столкнулся с проблемой C2440... Прочитал...

Printf: невозможно преобразовать параметр 1 из 'char' в 'const char *'
Здравствуйте, подскажите как исправить? &quot;printf: невозможно преобразовать параметр 1 из 'char' в...

Невозможно преобразовать параметр 1 из 'char' в 'const char *'
Дана задача: Задана последовательность, состоящая только из символов ‘&gt;’, ‘&lt;’ и ‘-‘. Требуется...

6
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
06.09.2009, 10:15 2
persalena, а Вы со строками в С вообще учились работать? Че за сравнение такое ==? Нынче адреса модно сравнивать? А присваивание что за такое =?
А ну быстро читай про функции работы со строками! strcmp, strncpy и прочие.
1
0 / 0 / 0
Регистрация: 02.12.2008
Сообщений: 23
06.09.2009, 10:31  [ТС] 3
Ой, точно! Спасибо большое!!!!
0
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
06.09.2009, 10:46 4
const_cast
C++
1
2
const char x = 'a';
*(const_cast<char*>(&x)) = 'b';
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,680
06.09.2009, 11:49 5
Адреса сравнивать можно. Об этом написно в K&R, думаю, что и у других авторов тоже.
...Справедливости ради скажу, что допускается сравнение указателей на одинаковый тип.
Думаю, это всё-таки наш случай. Ибо содержание указателя есть адрес. Так что
C
1
linetype1/*адрес переменной типа char*/ == "sploshnaya"/*тоже адрес переменной типа char"*/
Нормально будет

Другое дело, что делать это бессмысленно. Ибо, я так понял, тебе важно сравнить между собой содержания строк. Но не по каким адреса они располагаются.
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
06.09.2009, 12:05 6
string вроде можно сравнивать как ==, хотя не помню точно.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
07.09.2009, 03:37 7
Цитата Сообщение от Gravity
string вроде можно сравнивать как ==, хотя не помню точно.
там оно другое означает, то есть сама операция == по-другому работает (вроде из-за того, что перегружена)

отрывок с заголовка из include
C++
1
2
3
4
5
6
7
8
9
10
11
12
// operator ==
  /**
   *  @brief  Test equivalence of two strings.
   *  @param lhs  First string.
   *  @param rhs  Second string.
   *  @return  True if @a lhs.compare(@a rhs) == 0.  False otherwise.
   */
  template<typename _CharT, typename _Traits, typename _Alloc>
    inline bool
    operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
               const basic_string<_CharT, _Traits, _Alloc>& __rhs)
    { return __lhs.compare(__rhs) == 0; }
compare()

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
       *  @brief  Compare to a string.
       *  @param str  String to compare against.
       *  @return  Integer < 0, 0, or > 0.
       *
       *  Returns an integer < 0 if this string is ordered before @a str, 0 if
       *  their values are equivalent, or > 0 if this string is ordered after
       *  @a str.  Determines the effective length rlen of the strings to
       *  compare as the smallest of size() and str.size().  The function
       *  then compares the two strings by calling traits::compare(data(),
       *  str.data(),rlen).  If the result of the comparison is nonzero returns
       *  it, otherwise the shorter one is ordered first.
      */
      int
      compare(const basic_string& __str) const
      {
        const size_type __size = this->size();
        const size_type __osize = __str.size();
        const size_type __len = std::min(__size, __osize);
 
       int __r = traits_type::compare(_M_data(), __str.data(), __len);
        if (!__r)
          __r =  __size - __osize;
        return __r;
      }
0
07.09.2009, 03:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2009, 03:37
Помогаю со студенческими работами здесь

Невозможно преобразовать из char в const char
Добрый день! В строке вызова функции razdacha(Deck, Face, Suit); возникает ошибка invalid...

Невозможно преобразовать из const char в char*
#include &lt;string.h&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; class...

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что &quot;char *concat(char *,...)&quot;: невозможно...

Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]"
Вроде все правильно а все равно не работает. Подскажите в чем ошибка #include &lt;iostream&gt; ...

Невозможно преобразовать 'const char [6]' в 'long'
Есть код: FILE *Protectdll; FILE *Coredll; FILE *Console; Protectdll =...

Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *"
string s = &quot;555 44 55 66&quot;;//размер строки заранее неизвестен char* p =...

Невозможно преобразовать параметр 1 из 'const char [15]' в 'LPCWSTR'
с сайта скачала прогу которая должна рисовать сферу, но при компилировании выходит ошибка:error...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru