Невозможно сравнить пуанты и целые числа в c ++ 14 - PullRequest
2 голосов
/ 25 марта 2020

Я пытаюсь запрограммировать декодер кода. Но я получаю следующую ошибку для всех сравнений в операторах if:

'ошибка: ISO C ++ запрещает сравнение между указателем и целым числом [-fpermissive]'

The примеры для входной строки ".-.--" и "-..-.--".

#include <iostream>

#include <string>

using namespace std;
int main() {
  string s;
  int c[100], t = 0, l, i = 0;
  l = s.length();
  cin >> s;
  if (s[0] == '.') {
    c[0] = 0;
    t += 1;
    while (i < l) {
      if (s[i] == '-' && s[i + 1] == '.') {
        c[t] = 1;
        t += 1;
        i += 2;
      }
      if (s[i] == '.') {
        c[t] = 0;
        t += 1;
        i++;
      }
      if (s[i] == '-' && s[i + 1] == '-') {
        c[t] = 2;
        t += 1;
        i += 2;
      }
    }
  }
  if (s[0] == '-' && s[1] == '.') {
    c[0] = 1;
    t += 1;
    while (i < l) {
      if (s[i] == '-' && s[i + 1] == '.'
        '){
        c[t] = 1; t += 1; i += 2;
      }
      if (s[i] == '.') {
        c[t] = 0;
        t += 1;
        i++;
      }
      if (s[i] == '-' && s[i + 1] == '-') {
        c[t] = 2;
        t += 1;
        i += 2;
      }
    }
  }
  if (s[0] == '-' && s[1] == '-') {
    c[0] = 2;
    t += 1;
    while (i < l) {
      if (s[i] == '-' && s[i + 1] == '.') {
        c[t] = 1;
        t += 1;
        i += 2;
      }
      if (s[i] == ".") {
        c[t] = 0;
        t += 1;
        i++;
      }
      if (s[i] == "-" && s[i + 1] == "-") {
        c[t] = 2;
        t += 1;
        i += 2;
      }
    }
  }
  for (i = 0; i < t; i++) {
    cout << s[t];
  }
  return 0;
}

Как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 25 марта 2020

("") - это строковый литерал, который является char const *, который является указателем, а ('') является символом, который переводится в int, поэтому вы не можете их сравнивать. Они должны быть совместимы по типу.

1 голос
/ 25 марта 2020

Вы использовали одинарные кавычки, пока не попали сюда:

if(s[i]=="-"&&s[i+1]=="-"){

Вам нужно изменить его на одинарные кавычки, чтобы иметь сравнение от int до int.

if(s[i]=='-'&&s[i+1]=='-'){

Когда вы скажем

"-" 

вы создаете указатель. Когда вы говорите

'='

, вы создаете int.

...