Как сделать строку NULL в с ++ - PullRequest
0 голосов
/ 12 июля 2020

Я новичок в C ++ и теперь изучаю, как работают cin и cout. Дело в том, что, как вы можете видеть в приведенном ниже коде, я создаю string и char *, чтобы сравнить способ C чтения строки и способ C ++. В C ++ имеет смысл, что если я создаю строку, я беспокоюсь о том, чтобы установить для этой строки значение NULL?

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#define SIZE 10

using namespace std;
int main () {
  cout << "Write Something: \n";
  string f1;
  char *p;
  p = (char *) malloc(SIZE); // This is how I will use it in c
  getline(cin, f1);
  cout << "Write Something else: \n";
  scanf("%s", p);
  cout << f1 << "1\t";
  printf("%s2\n", p);
  free(p);
  p = NULL; // After the pointer has been freed, we set it to NULL
  cout << "p freed\t";
  f1.clear();
  cout << "f1 deleted\t";
  return 0;
}

Ответы [ 2 ]

2 голосов
/ 12 июля 2020

Вам не нужно беспокоиться о настройке объекта std::string на NULL.

И вам не нужно clear(), если он просто выходит за go за пределы области действия потом. Его деструктор освободит любую память, используемую для символьных данных.

1 голос
/ 12 июля 2020

Нет, вам не нужно даже очищать f1, поскольку RAII автоматически очистится, когда функция вернется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...