Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.85
persalena
0 / 0 / 0
Регистрация: 02.12.2008
Сообщений: 23
#1

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

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

Вот код:
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2009, 10:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Невозможно преобразовать "const char" в "char" (C++):

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

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

error C2664: strcmp: невозможно преобразовать параметр 1 из "char (*)[20]" в "const char *" - C++
for(int i = 0; i&lt; 5; i++) { wr_struc (list); if (strcmp(&amp;list.Sostav,osn_sostav)==0 &amp;&amp; strcmp(&amp;list.MestoVkomande,attack)==0...

Невозможно преобразовать параметр 2 из "char" в "const char *" - C++
Ошибка strcpy: невозможно преобразовать параметр 2 из &quot;char&quot; в &quot;const char *&quot; //удаления из первой строки всех символов, встречающихся...

невозможно преобразовать параметр 1 из "const char [8]" в "LPCWSTR" - C++
msoftcon.h //msoftcon.h //declarations for Lafore's console graphics functions //uses Window's console functions #ifndef...

Невозможно преобразовать параметр 1 из "const wchar_t [12]" в "const char *" - C++
Писал программу. Дошел до наложения текстур. Пытаюсь наложить 4-й час. Много разных ошибок. Все ошибки гуглил. На данный момент ошибка...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
06.09.2009, 10:15 #2
persalena, а Вы со строками в С вообще учились работать? Че за сравнение такое ==? Нынче адреса модно сравнивать? А присваивание что за такое =?
А ну быстро читай про функции работы со строками! strcmp, strncpy и прочие.
1
persalena
0 / 0 / 0
Регистрация: 02.12.2008
Сообщений: 23
06.09.2009, 10:31  [ТС] #3
Ой, точно! Спасибо большое!!!!
0
zim22
depict1
276 / 141 / 2
Регистрация: 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
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,460
06.09.2009, 11:49 #5
Адреса сравнивать можно. Об этом написно в K&R, думаю, что и у других авторов тоже.
...Справедливости ради скажу, что допускается сравнение указателей на одинаковый тип.
Думаю, это всё-таки наш случай. Ибо содержание указателя есть адрес. Так что
C
1
linetype1/*адрес переменной типа char*/ == "sploshnaya"/*тоже адрес переменной типа char"*/
Нормально будет

Другое дело, что делать это бессмысленно. Ибо, я так понял, тебе важно сравнить между собой содержания строк. Но не по каким адреса они располагаются.
0
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
06.09.2009, 12:05 #6
string вроде можно сравнивать как ==, хотя не помню точно.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2009, 03:37
Привет! Вот еще темы с ответами:

Преобразовать параметр из "WCHAR [260]" в "const char *" - C++
Подскажите пожалуйста, как &quot; преобразовать параметр из &quot;WCHAR &quot; в &quot;const char *&quot;&quot;? Вот,по коду я думаю понятно будет. Если поставить...

IntelliSense: несовместимые типы операндов ("char" и "const char *") - C++
привет всем! при таком коде: void main() { ifstream fin; ofstream fout; fin.open(&quot;input.txt&quot;); ...

Ошибка при сборке многофайлового проекта: "невозможно преобразовать "int" в "const golf" - C++
Сделал многофайловую программу программу, вот она: //golf.h #include &lt;iostream&gt; #ifndef golg_h_ #define golf_h_ const int Len =...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout - C++
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов- справочник телефонный, с именем и фамилией. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.09.2009, 03:37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru