Я хочу иметь 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();
Просто не делай этого, потому что ты этого не делаешь необходимость сделать это.
Вы могли бы использовать c_str()
функция для преобразования std::string
в массив символов, но в вашем случае это просто не нужно. В случае нахождения элементов (что, я считаю, то, что вам нужно), вы можете использовать строку operator[]
и относиться к нему, как к обычному массиву.
Ты можешь использовать c_str
член std::string
а также strcpy
Функция для копирования данных в массивы:
//array=s;
strcpy(array, s.c_str());
//array2=s2;
strcpy(array2, s2.c_str());
Тем не менее, вам не нужно делать это, если вы не должны передавать непостоянный char
массивы вокруг, потому что std::string
s выглядят и ощущаются как массивы символов, за исключением того, что они гораздо более гибкие. В отличие от массивов символов, строки будут увеличиваться до нужного размера, предоставлять методы для безопасного поиска и манипулирования и так далее.