C ++ конвертирует строки в массивы символов

Я хочу иметь 2 строки в качестве входных данных, чтобы я мог использовать getline(cin,s) (так что я могу выбрать всю строку до '\n'), а затем я хочу найти второй массив, если он содержит слово первого массива без использования string::find() или же strstr(),
Но я до сих пор не могу найти способ конвертировать строки в массивы

int main()
{
string s;
string s2;
char array[50];
char array2[50];

cout<<"Give me the first word"<<endl;
getline(cin,s);

cout<<"Give me the text"<<endl;
getline(cin.s2);

array=s;
array2=s2;
}

Второй способ, которым я думал, с самого начала выполнял работу с массивами:

char array[50];
cin.getline(array,50);

Но если я использую прямые массивы, есть ли способ найти длину массива, как мы делаем для строк?

//example
string s;
int x;

getline(cin,s);
x=line.length();

3

Решение

Просто не делай этого, потому что ты этого не делаешь необходимость сделать это.

Вы могли бы использовать c_str() функция для преобразования std::string в массив символов, но в вашем случае это просто не нужно. В случае нахождения элементов (что, я считаю, то, что вам нужно), вы можете использовать строку operator[] и относиться к нему, как к обычному массиву.

4

Другие решения

Ты можешь использовать c_str член std::string а также strcpy Функция для копирования данных в массивы:

//array=s;
strcpy(array, s.c_str());
//array2=s2;
strcpy(array2, s2.c_str());

Тем не менее, вам не нужно делать это, если вы не должны передавать непостоянный char массивы вокруг, потому что std::strings выглядят и ощущаются как массивы символов, за исключением того, что они гораздо более гибкие. В отличие от массивов символов, строки будут увеличиваться до нужного размера, предоставлять методы для безопасного поиска и манипулирования и так далее.

2