Im пытается написать простую программу, которая будет читаться в списке имен и позволит вам просматривать их. У меня проблема с моей cin.getline и моей strstr. Im, новый для C++ и im, с трудом поднимает голову вокруг строки c и ее функций. Я получаю ошибку из cin.getline не может преобразовать параметр 1 из «станд :: ifstream» в «символ *» и не может преобразовать параметр 1 из «полукокса» до «символ *»Проблема с cin.getline и strstr
Я получаю ошибку от strstr ошибка C2665: «strstr»: ни один из 2-х перегрузок не может конвертировать все типы аргументов
#include <iostream>
#include <string>
#include <fstream>
#include <cstring>
using namespace std;
int main()
{
const int SIZE = 50;
int size = 0;
// Array of product descriptions
char phoneDirectory[SIZE];
char name; // For user input
char *strPtr = NULL; // Result from strstr
ifstream inFile;
inFile.open("phonebook");
while (!inFile.fail())
{
cin.getline(inFile,phoneDirectory[size]);
size++;
}
inFile.close();
// Get user input
cout << "Enter a name to search for: ";
cin.getline(name, SIZE);
// Search for the string
int index = 0;
while(index < size)
{
strPtr = strstr(phoneDirectory[index], name);
if (strPtr != NULL)
break;
index++;
}
// Output the result of the search
if (strPtr == NULL)
cout << "No matching names were found.\n";
else
cout << phoneDirectory[index] << endl;
return 0;
}
I cant seem to fix the cin.getline's and the strstr.
Спасибо, что помогли много но он все еще дает ошибку на strPtr = strstr (phoneDirectory [index] .c_str(), name.c_str()) ;. У меня есть вопрос, почему вы должны изменить его на строку вместо char? – Doe
Здесь, похоже, работает нормально. Преимущество использования строки заключается в том, что вы не обязаны указывать длину строки функции getline. Это менее ограничительный. Я отправлю ответ, не используя строку в 2 сек. –
Я обновил свой ответ. Посмотрите также на std :: vector. Это хорошая практика, чтобы использовать их по массивам. –