将所有引用变量转换为指针变量

时间:2014-04-15 20:25:04

标签: c++ pointers

您好,我是初学者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;
}

1 个答案:

答案 0 :(得分:0)

他们希望您替换

string fill;

string *fill = new string;

然后在此之后的任何地方fill,更改为(*fill)

BTW这是一个非常愚蠢的事情。完成这项任务后,你应该试着忘记你“学到”的一切。