[英]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.