2013-12-14 38 views
0

只是想知道這是否可能,使一個字符串字等於一個字符?

我想要一個字符串輸入等於一個字符,當輸入按鈕被按下時。

所以在頂部我限定WLAN_SSID

#define WLAN_SSID  "abc" 

我還初始化取決於按下設備上的按鈕,其改變輸入。

String input = "abcdefg"; 

和下方某處的代碼,我有:

char *ssid = WLAN_SSID; 

我需要* SSID留爲char,但反正是有使之等於字符串「輸入」?

感謝

回答

1

你當然不能分配WLAN_SSIDchar*因爲字符串文字char const[N]類型(與合適的N),其愉快地衰變成char const*秒,但拒絕被分配給char* S的。如果您確實需要處理char*,則需要分配足夠的空間並將該值複製到此內存中。當然,改變它時,你也需要適當地釋放內存。例如

char* make_ssid(char const* value) { 
    static std::unique_ptr<char[]> memory; 
    std::size_t n = strlen(value); 
    memory.reset(new char[n + 1]); 
    strncpy(memory.get(), value, n + 1); 
    return memory.get(); 
} 
char* ssid = make_ssid(WLAN_SSID); 
+1

@ IgnacioVazquez - 艾布拉姆斯:自稱「C++」的任何系統以支持上述內容,即使可能有必要使用自定義類和函數來檢測標準庫設施。 ......這與van Neumann架構無關:C++標準要求功能。 –

0

首先,你需要爲char[]分配空間。

ssid = malloc(sizeof(char) * (input.length() + 1)); 

然後您需要使用String::toCharArray()將字符複製到緩衝區中。

input.toCharArray(ssid, input.length()); 

然後,當您完成ssid時,您需要放棄爲其分配的內存。

free(ssid); 

您可能還需要在重新使用前放棄的ssid原始值,但我不知道有足夠的瞭解的Arduino是肯定的。

+0

'新[]'會在C++更好(如果它不是在GNU工具鏈AVR誠然打破)...... – 2013-12-14 20:13:49