First non-repeated character
I've reviewed your code and here's what I've found.

Reconsider your algorithm

It's not really necessary to iterate through all of the characters in the string, as the current code does.  Since the task is to find only the first non-repeated character, the algorithm can terminate as soon as it finds a non-repeated character.  A simple way to do that is this:

void findNonRepeatedChar( const std::string&amp; record )
{
    for (std::string::size_type i = 0; i &lt; record.size(); ++i) {
        if (record.rfind(record[i]) == i) {
            if (record.find(record[i]) == i) {
                std::cout &lt;&lt; record[i] &lt;&lt; '\n';
                return;
            }
        }
    }
}


Reconsider the interface

It is odd that a function named findNonRepeatedChar() does not actually return anything.  The code could be clearer if it actually returned the non-repeated letter and left the printing to the calling routine.

Don't instantiate an object that is not needed

There is no reason to instantiate the record to "tooth" (or any other value) within readInputFile.

Use more descriptive function names

The function named readInputFile does more than simply read the file and as mentioned before, the findNonRepeatedChar() function doesn't return anything but prints as a side effect.  I'd be inclined to omit readInputFile entirely, and put its contents within main and to change the interface to as previously mentioned.

Give the user useful help

The program is probably not really named program_name so the string that's printed if there aren't enough commmand line arguments should probably instead be:

std::cout &lt;&lt; "Usage: " &lt;&lt; argv[0] &lt;&lt; " input_file_name\n";