Your question sounds as if you are a beginner, as me, so my first advice is to use SFML as I did (I used the TCP option it provides). You will see that even if your problem of having to decide between TCP vs UDP is solved, the problem of managing your network will still be considerable, so just take a library which works, no matter if UDP or TCP, because as you gain experience, you will have to change all your code anyway.
Try using Enet if you insist with mixing UDP and TCP. Its actually UDP based, but with one button you can turn reliability on and off as if you were using TCP.
Ps: TCP will guarantee that your chat mesages arrive. UDP doesnt give you this guarantee by default, unless you tweak it to do so. Instead of tweaking it, you can ask Enet to do it automatically for you.