1 - There are many ways to do this. I like using stringstreams, it makes me feel cool.
std::stringstream ss;
ss << "FPS: " << FPS;//FPS being your framerate int/float/whatever
std::string str = ss.str();
You can then use SetText(str) or could probably go straight from the stringstream to sf::String. Note that stringstream needs you to include <sstream>
2 - SFML doesn't have built in support for text boxes exactly. As you said you could use one of the GUI projects, but I find that over kill for most things. I usually just use the TextEntered event.
Here's an example, complete with working backspace!
std::string inputString;
if (Event.Type == sf::Event::TextEntered)
{
char c = Event.Text.Unicode;
if (c == 8)//8 is backspace
{
if (inputString.size() > 0)//check that there is something to delete
{
inputString.erase(inputString.end() - 1);//delete the last character
}
}
else if (c < 128 && c > 31)//pretty much anything you want should be between 31 and 128
{
inputString.push_back(c);
}
}
sf::String whatever;
whatever.SetText(inputString);
Hope that was of help!