2014-11-14 3 views
0

Я искал примеры и учебные пособия о том, как заставить strlen работать, но ничего не работает. Я делаю небольшую программу, которая позволяет вводить ваше предложение, и вы можете искать конкретное письмо в предложении.Ошибка при использовании 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-Style, a.k.a. 'char *', а не на 'std :: string'. Просмотрите описание функции и описание в любой хорошей ссылке на C++. –

ответ

4

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

+1

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

Смежные вопросы