2011-09-12 16 views
61

पर एक int सरणी में एक int या स्ट्रिंग को कनवर्ट करना मुझे अपने Arduino पर एनालॉग पिन में से एक से एक मूल्य प्राप्त हो रहा है। मैं इसे String पर कैसे जोड़ूं और फिर String को char[] में परिवर्तित कर दूं?Arduino

यह सुझाव दिया गया था कि मैं char msg[] = myString.getChars(); का प्रयास करता हूं, लेकिन मुझे एक संदेश प्राप्त हो रहा है कि getChars मौजूद नहीं है।

+5

क्या आपको वास्तव में एक संशोधित सरणी की आवश्यकता है? यदि नहीं, तो आप 'const char * msg = myString.c_str();' का उपयोग कर सकते हैं। 'ToCharArray()' के विपरीत, 'c_str()' शून्य-प्रतिलिपि ऑपरेशन है, और शून्य-प्रति स्मृति-बाधित उपकरणों पर एक अच्छी चीज है। –

उत्तर

99
  1. बदलने और एक पूर्णांक संलग्न करने के लिए, का उपयोग operator += (या सदस्य समारोह concat):

    String stringOne = "A long integer: "; 
    stringOne += 123456789; 
    
  2. प्रकार char[] के रूप में स्ट्रिंग पाने के लिए, का उपयोग toCharArray():

    char charBuf[50]; 
    stringOne.toCharArray(charBuf, 50) 
    

उदाहरण में, 49 अक्षरों के लिए केवल एक जगह है (मान लीजिए कि इसे शून्य से समाप्त कर दिया गया है)। आप आकार गतिशील बनाना चाहते हैं।

+11

मुझे बहुत परेशान समय बचाया। धन्यवाद! Char [] आकार गतिशील बनाने के लिए, 'char charbuf [stringOne.length() + 1] ' – loeschg

+8

जैसा कुछ मैंने इसे गतिशील रूप से किया: ' char ssid [ssidString.length()]; ' 'ssidString.toCharArray (एसएसआईडी, एसएसआईडीस्ट्रिंग। लम्बाई());' – dumbledad

+1

@loeschg धन्यवाद, मैंने पहली बार '+1' के बिना कोशिश की, लेकिन आपका समाधान मेरे लिए काम करता था! –

39
बस एक संदर्भ के रूप

है, तो यहां एक गतिशील लंबाई के साथ String और char[] के बीच परिवर्तित करने के लिए एक उदाहरण है -

// Define 
String str = "This is my string"; 

// Length (with one extra character for the null terminator) 
int str_len = str.length() + 1; 

// Prepare the character array (the buffer) 
char char_array[str_len]; 

// Copy it over 
str.toCharArray(char_array, str_len); 

हाँ, यह रूप में सरल कुछ एक प्रकार रूपांतरण के रूप में के लिए दर्दनाक कुंठित है, लेकिन दुर्भाग्य से यह सबसे आसान तरीका है।

0

उस सामान में से कोई भी काम नहीं करता है। यहां एक बहुत आसान तरीका है .. लेबल str एक सरणी है जो सूचक है ...

String str = String(yourNumber, DEC); // Obviously .. get your int or byte into the string 

str = str + '\r' + '\n'; // Add the required carriage return, optional line feed 

byte str_len = str.length(); 

// Get the length of the whole lot .. C will kindly 
// place a null at the end of the string which makes 
// it by default an array[]. 
// The [0] element is the highest digit... so we 
// have a separate place counter for the array... 

byte arrayPointer = 0; 

while (str_len) 
{ 
    // I was outputting the digits to the TX buffer 

    if ((UCSR0A & (1<<UDRE0))) // Is the TX buffer empty? 
    { 
     UDR0 = str[arrayPointer]; 
     --str_len; 
     ++arrayPointer; 
    } 
} 
+0

'str' किसी सरणी के लिए सूचक नहीं है, यह' [] 'ऑपरेटर को लागू करने वाली 'स्ट्रिंग' ऑब्जेक्ट है। –