#include <iostream>
#include <iomanip>
#include <string>
// Sum the characters in a c-style string.
int cStringSum( const char * str )
{
int sum = 0;
// Loop while we haven't hit the terminating '\0' char.
while ( '\0' != *str )
{
// Add the current char to the sum.
sum += *str;
++str;
}
return sum;
}
// Sum the characters in a c++ string.
int stringSum( const std::string & str )
{
int lim = str.size();
int sum = 0;
// Use a normal loop over the number of characters.
for ( int pos = 0; pos < lim; ++pos )
{
// Add the current char to the sum.
sum += str[pos];
}
return sum;
}
int main()
{
// For decimal output.
std::cout << cStringSum("abc") << "\n";
std::cout << stringSum("abc") << "\n";
// For hex output.
std::cout << std::hex;
std::cout << cStringSum("abc") << "\n";
std::cout << stringSum("abc") << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHN0cmluZz4KCi8vIFN1bSB0aGUgY2hhcmFjdGVycyBpbiBhIGMtc3R5bGUgc3RyaW5nLgppbnQgY1N0cmluZ1N1bSggY29uc3QgY2hhciAqIHN0ciApCnsKICAgIGludCBzdW0gPSAwOwogICAgLy8gTG9vcCB3aGlsZSB3ZSBoYXZlbid0IGhpdCB0aGUgdGVybWluYXRpbmcgJ1wwJyBjaGFyLgogICAgd2hpbGUgKCAnXDAnICE9ICpzdHIgKQogICAgewogICAgICAgIC8vIEFkZCB0aGUgY3VycmVudCBjaGFyIHRvIHRoZSBzdW0uCiAgICAgICAgc3VtICs9ICpzdHI7CiAgICAgICAgKytzdHI7CiAgICB9CiAgICByZXR1cm4gc3VtOwp9CgovLyBTdW0gdGhlIGNoYXJhY3RlcnMgaW4gYSBjKysgc3RyaW5nLgppbnQgc3RyaW5nU3VtKCBjb25zdCBzdGQ6OnN0cmluZyAmIHN0ciApCnsKICAgIGludCBsaW0gPSBzdHIuc2l6ZSgpOwogICAgaW50IHN1bSA9IDA7CiAgICAvLyBVc2UgYSBub3JtYWwgbG9vcCBvdmVyIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycy4KICAgIGZvciAoIGludCBwb3MgPSAwOyBwb3MgPCBsaW07ICsrcG9zICkKICAgIHsKICAgICAgICAvLyBBZGQgdGhlIGN1cnJlbnQgY2hhciB0byB0aGUgc3VtLgogICAgICAgIHN1bSArPSBzdHJbcG9zXTsKICAgIH0KICAgIHJldHVybiBzdW07Cn0KCmludCBtYWluKCkKewogICAgLy8gRm9yIGRlY2ltYWwgb3V0cHV0LgogICAgc3RkOjpjb3V0IDw8IGNTdHJpbmdTdW0oImFiYyIpIDw8ICJcbiI7CiAgICBzdGQ6OmNvdXQgPDwgc3RyaW5nU3VtKCJhYmMiKSA8PCAiXG4iOwoKICAgIC8vIEZvciBoZXggb3V0cHV0LgogICAgc3RkOjpjb3V0IDw8IHN0ZDo6aGV4OwogICAgc3RkOjpjb3V0IDw8IGNTdHJpbmdTdW0oImFiYyIpIDw8ICJcbiI7CiAgICBzdGQ6OmNvdXQgPDwgc3RyaW5nU3VtKCJhYmMiKSA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9