Я пытался создать подстроки точно на половину длины исходной строки, а затем сортировал их в порядке их кодов ASCII и, наконец, проверял их равенство с помощью библиотечной функции strcmp (). (То есть я пытался проверить, можно ли разделить родительскую строку на две равные половины.) Вот что я сделал:
Взял ввод родительской строки от пользователя по cin.
Затем я использовал переменную hlength для хранения значения половины длины исходной строки.
Теперь я объявил две строки одинаковой длины (равно hlength), так что первая половина строки копируется в подстроку с именем "s1", а остальная половина копируется в подстроку "s2". я использовал циклы для копирования элементов строки.
Чтобы проверить, правильно ли скопированы строки, я напечатал каждый элемент строки сразу после копирования, используя cout << </em>, как вы можете видеть в прилагаемом коде.
До сих пор все выглядело хорошо, поскольку отдельные элементы при печати были правильными.
Но !! возникает ситуация, с которой я никогда не сталкивался: когда я пытался напечатать полную строку, используя cout << </em> Вывод был пустым.
Позже вместо печати строк я просто попытался сравнить их с функцией strcmp (), но это привело к ошибке : невозможно преобразовать 'std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string}' в 'const char 'для аргумента от' 1 'до' int strcmp (const char *, const char *) '*
#include <bits/stdc++.h>
#define fastIO ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define llt long long int
using namespace std;
int main()
{
int length,hlength,i,result;
string s;
cin>>s;
length = s.length();
hlength = length/2;
string s1,s2;
for(i = 0; i< hlength;i++)
{
s1[i] = s[i];
cout<<s1[i]<<endl; //each element gets printed successfully
}
for(i = 0; i< hlength ; i++)
{
s2[i] = s[length -1 - i];
cout<<s2[i]<<endl; //the elements are printed successfully, but obviously in the reverse order( order not matters)
}
cout<<s1<<endl<<s2; // no strings printed
sort(s1.begin(),s1.end());
sort(s2.begin(),s2.end());
result = strcmp(s1 , s2); //ERROR
cout<<result<<endl;
return 0;
}
PS: исходная строка имеет четную длину.
Пожалуйста, помогите мне узнать, почему строка не печатается, а отдельные элементы печатаются правильно. И что означает эта ошибка?