Arduino里的字符串筆記
1 字符串轉數字 String To Int
/*
使用String.toInt()將字符串轉為數字示例
*/
String inString = ""; // string to hold input
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// send an intro:
Serial.println("\n\nString toInt():");
Serial.println();
}
void loop() {
// Read serial input:
while (Serial.available() > 0) {
int inChar = Serial.read();
if (isDigit(inChar)) {
// convert the incoming byte to a char
// and add it to the string:
inString += (char)inChar;
}
// if you get a newline, print the string,
// then the string's value:
if (inChar == '\n') {
Serial.print("Value:");
Serial.println(inString.toInt());
Serial.print("String: ");
Serial.println(inString);
// clear the string for new input:
inString = "";
}
}
}
2 數字轉字符串 IntTo String
- 直接賦值
String myNumber = 1234;
- 使用類成員函數轉換,將數字自動追加到字符串結尾
int value = 123;
String myReadout = "The reading was ";
myReadout.concat(value);
- 使用類運算符轉換,將數字自動追加到字符串結尾
int value = 123;
String myReadout = "The reading was ";
myReadout += value;
3 常見函數整理
String.c_str()
一個將string轉換為 const* char的函數。
c_str函數的返回值是const char的,不能直接賦值給char
String s = "Chelse";
const char *str = s.c_str();
strcpy
原型聲明:char *strcpy(char* dest, const char *src);
strcpy(A, B.c_str());//將B復制給A
sprintf
把整數123 打印成一個字符串保存在s 中。
char *s;
sprintf(s, "%d", 123); //產生"123"
4 char*,const char*和string 三者轉換
1. const char* 和string 的轉換
(1) const char*轉換為 string,直接賦值即可。
const char* tmp = "tsinghua"
string s = tmp;
(2) string轉換為const char*,利用c_str()
string s = "Arduino";
const char*tmp = s.c_str();
2. char*和const char* 的轉換
(1) const char*轉化為char*,利用const_cast<char*>
const char* tmp = "Arduino";
char* p = const_cast<char*>(tmp);
(2) char*轉化為const char*,直接賦值即可。
char* p = "tsinghua"
const char* tmp = p;
3. char*和string 的轉換
有了1和2的基礎,char*和string轉化就很簡單了。
(1)char*轉化為string,直接賦值即可。
char* p = "Arduino"
string str = p;
(2)string轉化為char*,走兩步,先是string->const char,然后是const char->char*
string str = "Arduino";
char* p = const_cast<char*>(str.c_str());