Я искал примеры и учебные пособия о том, как сделать работу 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;
}
Поскольку sentence
является std::string
, вы должны использовать либо sentence.length()
либо strlen(sentence.c_str())
.
sentence.size()
(что я бы предпочел, потому что он соответствует другим контейнерам библиотеки C ++). strlen(sentence.c_str())
не является хорошим выбором, потому что он, вероятно, будет выполнять работу по вычислению длины для каждой итерации.
strlen
работает со строками в стиле C, иначе онаchar *
, а не сstd::string
. Просмотрите описание функции и описание в любой хорошей справке C ++.