簡體   English   中英

在編譯時將const char *轉換為char *

[英]Converting a const char* to char* at compile-time

在我的項目中,我需要用戶輸入一個字符串,並且鍵入的字符串默認情況下為const char* (使用引號)。 在我的項目中,我還需要修改這些字符串,因此我不能真正使用const

因此,我考慮使用以下功能將const char*轉換為char*

不能100%地確定這是問題所在(因為它對我來說崩潰了),但是我相信問題是New字符串沒有足夠的內存來存儲整個字符串。 我嘗試通過如下方式分配內存:

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

考慮到我的參數和constexpr,這也不起作用。


我想知道是否有人知道我可以使用它來完成這項工作。 我已經為此工作了一段時間,因此解決方案可能是顯而易見的解決方案,但我只是看不到它。 如果是這樣,我的壞:D

更簡單的方法是使用函數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空間分配您想要復制字符串的位置。 之后,您可以根據需要對其進行修改。

讓我知道這是否對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM