Actually, it is untrue that being a sociopath makes a person charming. It's more complex than that.
An aspect of human "moral behavior" is tending to "stop and think" before proceeding along a certain course. People who lack this reflex might be essentially honorable people. They might give to charities. They might have the ability to sincerely love a certain person. However, they may also act more readily on "evil" ideas. They might hurt a person before they have realized that they went against something they really believed in. It is really very much a tragedy. Think "Hell's Angels."
However, there is a trade-off that comes with this "stop and think" reflex. It's not as easy for you to be a "smooth talker" because you get distracted from your target activity, which is trying to charm some guy or some girl, and you start doubting yourself. You doubt your motives. You wonder if you are being "real," and meanwhile your target gets off the hook and swims away.
The thing is, people who have evil motives might still have the "stop and think" reflex. Therefore, those people will have the ability to stay out of trouble. They will be able to avoid getting caught at being evil, but they are still evil. They are just better at it than those who are more likely to be labeled "sociopaths." They might not have the charm, but they might be pretty rich, usually on the back of other people's suffering. Let's take for example a lawyer who makes his living off of ruining other people's lives and becomes a billionaire in doing so. Hardly a charming or likable sort of person, generally creepy to be around.
Now, let's compare that nasty lawyer with a charming working-class guy who tends to beat his lovers, get into fights, do really deviant things, but also seems to be the first person to run into a burning building to help others. The wicked lawyer actually is evil, but he is not immediately dangerous to anybody. The other guy might be dangerous, but he really has a more noble character. Of course, you also have people who have both problems.
In any case, there is no such thing as a "perfect guy." Literally. A good relationship is based on the solid foundation of patience. The longer you know a person, the more apparent that person's flaws will be. If you consider the slightest flaw to be a deal-killer because suddenly you realize that this person is not as picture-perfect as you started out believing, the relationship is doomed. You must be willing to practice tolerance toward a normal, flawed human being. That is the makings of a truly beautiful and lasting relationship.
Also, you might want to look up the term "limerence." When your mind is in the state of romantic attraction, you are not thinking clearly about that person. When you have a crush, you are in that state of mind called "limerence," which means that you are prone to forming an unrealistic perception of what kind of person the object of your attraction is. No matter who you are, no matter how intelligent or cynical you may be, when your mind is in this state, the object of your desire is going to be bigger than life.
That isn't to say limerence is a bad thing. It is a wonderful feeling. Enjoy it while it lasts. However, if you want that feeling to be replaced with the tranquil, deep sense of bonding that comes with long-term attachment, you must have the ability to accept into your heart a person who is just as human and flawed as any bum on the street. If some random person you have no feelings for is not good enough for you, then you are never going to be happy with anybody in the long-term, no matter how strong your crush may be.
If you want real love, learn to love a human being. That is all there is out there.