Преобразование const char * в char * во время компиляции - PullRequest
0 голосов
/ 03 марта 2019

В моем проекте мне нужно, чтобы пользователь ввел строку, и по умолчанию набирается строка const char* (с использованием кавычек).В моем проекте мне также нужно изменить эти строки, поэтому я не могу действительно использовать const.

Поэтому я подумал о преобразовании const char* в char* с помощью следующей функции:

Не уверен на 100%, что это проблема (так как она у меня вылетает), но я считаю, что проблема в том, что в строке New недостаточно памяти для хранения всей строки.Я попытался выделить это память, написав так:

const char* szOldString = "Test";
char* szNewString[0x1024];
noconst(&szOldString, &szNewString, 5);

Это также не сработало, учитывая мои параметры и constexpr.


Мне интересно, кто-нибудь знает какой-нибудь крутойхаки, которые я могу использовать, чтобы сделать эту работу.Я работал над этим в течение некоторого времени, поэтому решение может быть очевидным, и я просто не вижу его.Если это так, мой плохой: D

1 Ответ

0 голосов
/ 03 марта 2019

Более простой способ - использовать функцию strncpy (которая более безопасна, чем просто использование strcpy).

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
  //char oldString[]= "Hello World!";
  const char* oldString = "Hello World!";
  char newString[40];

  /* copy to sized buffer (overflow safe): */
  strncpy ( newString, oldString, sizeof(newString) );

  cout << newString;  

    return 0;
}

Другой способ - выделить с помощью malloc место, куда вы хотите скопировать строку.После этого вы можете изменить его по своему усмотрению.

Дайте мне знать, помогло ли это вам.

...