问题是:重载函数K,功能是输出一个字符串的后4位并比较它们是否相同?
这是我们的C++作业,因为是第一节课 而且老师也讲的好浮 所以都不是很明白 还请会做的朋友给个解 (最好是带步骤和解释的,因为我还都不懂啊) 另外 如果能给点学C++的建议就更是不胜感激了
參考答案:#include <iostream>
#include <string>
#include <cstdlib>
#include <iomanip>
using namespace std;
bool K(const char* chars)
{
string str(chars);
string ::const_iterator it = str.end() - 4;
bool flag = true;
char ch = *it;
for(int i = 0; i < 4; ++i)
{
if(*it != ch)
flag = false;
cout << *it++;
}
return flag;
}
bool K(const string& str)
{
string ::const_iterator it = str.end() - 4;
bool flag = true;
char ch = *it;
for(int i = 0; i < 4; ++i)
{
if(*it != ch)
flag = false;
cout << *it++;
}
return flag;
}
bool K(const int num)
{
char chars[32];
string str(_itoa(num, chars, 10));
string ::const_iterator it = str.end() - 4;
bool flag = true;
char ch = *it;
for(int i = 0; i < 4; ++i)
{
if(*it != ch)
flag = false;
cout << *it++;
}
return flag;
}
bool K(const unsigned num)
{
char chars[32];
string str(_itoa(num, chars, 10));
string ::const_iterator it = str.end() - 4;
bool flag = true;
char ch = *it;
for(int i = 0; i < 4; ++i)
{
if(*it != ch)
flag = false;
cout << *it++;
}
return flag;
}
int main()
{
ios::fmtflags OldFlag = cout.flags();
cout.setf(ios_base::boolalpha | ios_base::left);
cout << setw(10) << " jimmyi: "; cout << ' ' << K("jimmyi") << endl;
cout << setw(10) << " jimmmm: "; cout << ' ' << K("jimmmm") << endl;
cout << setw(10) << " 123456: "; cout << ' ' << K(unsigned(123456)) << endl;
cout << setw(10) << " 110000: "; cout << ' ' << K(unsigned(110000)) << endl;
cout << setw(10) << "-123456: "; cout << ' ' << K(-123456) << endl;
cout << setw(10) << "-110000: "; cout << ' ' << K(-110000) << endl;
cout.setf(OldFlag);
}
输出:
jimmyi: mmyi false
jimmmm: mmmm true
123456: 3456 false
110000: 0000 true
-123456: 3456 false
-110000: 0000 true
Press any key to continue ...
建议:
书:
另外:
坚持...