EDIT: just read your post.
I don't think you need to do much to integrate it, you should be splitting logic and rendering as much as possible, and so SFML doesn't need to know anything about what pathfinding method you use. Just make sure you expose your terrain in a format that is easy to run the algorithm through.
OLD post:
I've uploaded it
here.
The code uses SFML 1.6, though only the main.cpp actually references SFML, everything else is independent. It should compile fine with 1.6 and only needs a few modifications to work with 2.0
The algorithm i developed uses a Terrain graph, which consists of just a container of Nodes, linked by Edges. This is just to simplify the path-finding(mostly for the cost of moving between nodes, which is stored in the Edge). Its fairly simple, so you shouldn't have too much trouble replacing it which your own map format.
The actual A* algorithm spits out a path(queue of vector2 positions). The vectors correspond to tile positions.
And I use my own vector2 class to reduce the couple with SFML(this is just to demonstrate I understand the concept, assignment and all).
The algorithm goes something like this:
Create a list(the OPEN list) and place your starting tile in the list. This list holds the tiles that you are about to check, so any unchecked tile adjacent to a closed tile.
Also create a closed list. You close a tile be removing it from the open list and adding it to the closed list. These are tiles you have checked and calculated movement costs for.
I have a third list to keep track of the current cost of each node(the cost includes the travel time from the start position, so later nodes as much more expensive than nodes adjacent to the start node). Add data to this list as you close tiles.
Then for each iteration:Pick a tile from the open list(you can use a herustic to search in a specific direction, otherwise you end up searching in a circle) and close it, then add all tiles adjacent to this tile to the open list.
Each time you add a tile to the closed list, you create a pointer that points back to the closed tile that you came from previously, this way, for any tile in the closed list, their is a path of pointers leading back to the start position.
If you find a node that is already closed, then check to see if you current path to it is cheaper than the one stored, and replace it if so.
Keep repeating this until the tile chosen is the end point you were looking for.
I don't know if I'm good at explaining it. :p
But hopefully you can understand my code. It took me quite some time(spent reading the earlier link and Wikipedia) before I could understand it.
Note the algorithm is slow in debug, I really should have split the logic so that it could run over multiple frames. This may not be necessary depending on the size of your game world.
This post got pretty big, but I hope it helps.