Как сравнить строку в двойных кавычках с символом? - PullRequest
0 голосов
/ 06 августа 2020

Я попытался сравнить нижний индекс строки со строкой с пробелом ("") в C ++, но он вернул ошибку сравнения указателя. Теперь, когда я пытаюсь сравнить "" с "', очевидно, что это не равно. Приведенный ниже код должен продолжить для l oop, когда определенный нижний индекс строки равен пробелу.

Если я сравниваю подстроку с "", я получаю эту ошибку: 16:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]

Обратите внимание, что когда я ввожу пробел во входную переменную, он должен его сравнить.

// Example program
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
int main()
{
    string input;
    vector<int> letters (26,0);
    vector<char> alpha = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    bool flag;
    cin >> input;
    for(int i = 0; i < input.size();i++){
        if(input[i]==' '){
            continue;
        }
        cout << i;
        
        for(int j = 0; j < alpha.size(); j++){
            if(input[i]==alpha[j]){
                letters[j] ++;
            }
        }
    }
     
    for (int i = 0; i < letters.size();i++){
        if(letters[i] > 0){
            cout << alpha[i] << ": " << letters[i] << endl;
        }
    }
   
   
}

Есть ли способ сравнить пробел со строкой?

1 Ответ

0 голосов
/ 06 августа 2020

Насколько я знаю, заставить 's' == "s" работать невозможно. Но вы можете заставить 's' == string("s") работать, определив operator==:

// for 's'==string("s")
bool operator==(const char c, const string &s) { return c == s[0]; } 
// for string("s") == 's'
bool operator==(const string &s, const char c) { return c == s[0]; } 

И это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...