Ошибка при использовании strlen

0

Я искал примеры и учебные пособия о том, как сделать работу strlen, но ничего не работает. Я делаю небольшую программу, которая позволяет вводить ваше предложение, и вы можете искать конкретное письмо в предложении.

Ошибка:

19:23: error: cannot convert âstd::string {aka std::basic_string<char>}â to âconst char*â for argument â1â to âsize_t strlen(const char*)â

#include <iostream>
#include <string>
#include <cstring>

using namespace std;

int main() {
    char letter;
    string sentence;
    int count;

    cout << "Enter a character to count the number of times it is in a sentence: ";
    cin >> letter;

    cout << "Enter a sentence and to search for a specified character: " << endl;
    getline(cin, sentence);

    for(int i = 0; i < strlen(sentence); i++){
            if(sentence[i] == letter){
                    count++;
            }
    }
    cout << letter << " was found " << count << " times." << endl;
}
  • 0
    Функция strlen работает со строками в стиле C, иначе она char * , а не с std::string . Просмотрите описание функции и описание в любой хорошей справке C ++.
Теги:
string
strlen

1 ответ

4
Лучший ответ

Поскольку sentence является std::string, вы должны использовать либо sentence.length() либо strlen(sentence.c_str()).

  • 1
    или sentence.size() (что я бы предпочел, потому что он соответствует другим контейнерам библиотеки C ++). strlen(sentence.c_str()) не является хорошим выбором, потому что он, вероятно, будет выполнять работу по вычислению длины для каждой итерации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню