您好,我是初学者C ++学生,我无法弄清楚如何做到这一点。我没有提出我正在处理的代码,因为它与我们下面开始的代码非常相似。我无法弄清楚如何处理getTimeFromUser函数中的字符串变量或其他任何东西。下面是我们需要做的以及使用引用运算符编写的原始代码的描述。
在这个编码赋值中,我们应该使用指针重写这段代码(没有引用运算符)。它需要使用我们已定义的所有变量的指针,除了结构中的变量(小时,分钟和秒)。我们不应该完全重写它,只需改变使用指针而不是引用运算符所需的东西。
我们应该使用的一些东西是: 1:你必须将除结构内部变量之外的所有变量切换为指针。
2:使用new运算符动态分配内存。以来 你不能使用引用运算符,你将不得不使用new运算符。
3:一旦不需要变量,就必须确保取消分配内存 了。这可以使用删除功能完成。
4:当你有一个结构指针(例如Time * startTime)时,不要使用(。)运算符 访问其成员变量。例如您需要修改startTime.hours。
5:与前一点类似,如果你有一个字符串指针(例如字符串* tmpStr),请不要 使用(。)运算符来访问其成员函数。例如你需要修改 tmpStr.length()。
#include <iostream>
#include <string>
#include <iomanip>
#include <sstream>
#include <stdlib.h>
#include <cstddef>
#include <fstream>
using namespace std;
struct Time
{
int hour;
int minute;
int second;
Time()
{
hour=0;
minute=0;
second=0;
}
};
void getTimeFromUser(Time &value)
{
string fill, fille, filler;
getline(cin, fill, ':');
value.hour = atoi(fill.c_str());
getline(cin, fille, ':');
value.minute = atoi(fille.c_str());
getline(cin, filler);
value.second = atoi(filler.c_str());
}
void print24Hour(Time a)
{
if(a.hour <=9)
{
cout<<setfill('0')<< setw(2);
}
cout<<a.hour<<":";
if (a.minute <=9)
{
cout<<setfill('0')<<setw(2);
}
cout<<a.minute<<":";
if(a.second <=9)
{
cout<<setfill('0')<<setw(2);
}
cout<<a.second<< endl;
}
int main()
{
Time value;
cout<<"Please enter the time of your course. HH:MM:SS" << endl;
getTimeFromUser(value);
cout<<"Your start time is ";
print24Hour(value);
cout<<"Please enter your end time"<< endl;
getTimeFromUser(value);
cout<<"Your end time is ";
print24Hour(value);
return 0;
}
答案 0 :(得分:0)
他们希望您替换
string fill;
与
string *fill = new string;
然后在此之后的任何地方fill
,更改为(*fill)
。
BTW这是一个非常愚蠢的事情。完成这项任务后,你应该试着忘记你“学到”的一切。