Массив не инициализирован. Напишите
bool * barr = new bool[128]();
Обратите внимание, что эта строка
"Ab cde Fg"
^ ^
содержит неуникальные пробелы.
Возможно, вам следует написать функцию так, чтобы она игнорировалась пробелы.
Если игнорировать пробелы, то функцию можно определить, например, следующим образом, как показано в демонстрационной программе ниже.
#include <iostream>
#include <iomanip>
#include <string>
#include <set>
#include <cctype>
bool isUnique1( const std::string &s )
{
std::set<char> set;
std::pair<std::set<char>::iterator, bool> p( std::set<char>::iterator(), true );
for ( std::string::size_type i = 0; p.second && i < s.size(); i++ )
{
if ( not std::isspace( ( unsigned char )s[i] ) ) p = set.insert( s[i] );
}
return p.second;
}
int main()
{
std::cout << std::boolalpha << isUnique1( "Ab cde Fg" ) << '\n';
return 0;
}
Вывод программы:
true
В противном случае, если пробелы нельзя игнорировать, то l oop будет выглядеть как
for ( std::string::size_type i = 0; p.second && i < s.size(); i++ )
{
p = set.insert( s[i] );
}
Или без al oop функция может быть записана следующим образом
#include <iostream>
#include <iomanip>
#include <string>
#include <set>
#include <iterator>
#include <cctype>
bool isUnique1( const std::string &s )
{
return std::set<char>( std::begin( s ), std::end( s ) ).size() == s.size();
}
int main()
{
const char *s = "abcdefghijklmnopqrstuvwxyz";
std::cout << std::boolalpha << isUnique1( s ) << '\n';
return 0;
}
Вывод программы
true