2011-11-24 4 views
3

이것은 C++에서 가장 쉬운 방법입니다.int를 string/char로 변환하십시오. C++/Arduino

그리고 전에 여러 번 묻는 것을 알고 있습니다. 그러나이 것은 Arduino 프로젝트의 일부이며 메모리 절약은 최대 32256 바이트까지만 가지고 있기 때문에 큰 문제입니다.

정수를 문자열로 변환해야합니다.

int GSM_BAUD_RATE; 
GSM_BAUD_RATE = 4800; 

Serial.println("GSM Shield running at " + GSM_BAUD_RATE + " baud rate."); 

확실히 마지막 줄에 오류가 표시됩니다.

미리 감사드립니다.

+8

자바 배경이어야합니다. – Lalaland

+1

Arduino에 대한 태그 추가 - 여기에 큰 차이가 있습니다. –

+0

@MatteoItalia Matteo 감사합니다. – fuzz

답변

6

보인다, 당신은 아두 이노에 최선을 다하고 있습니다, 경우 프로젝트의 경우에는 Serial 개체를 처리해야합니다.

int GSM_BAUD_RATE; 
GSM_BAUD_RATE = 4800; 

Serial.print("GSM Shield running at "); 
Serial.print(GSM_BAUD_RATE); 
Serial.println(" baud rate."); 
println 메서드에는 여러 가지 유형을 처리하기위한 오버로드가 있기 때문에

입니다.

다른 방법은 "정상"기계에 유용 할 수 있지만, 물건 같은 stringostringstream는 아두 이노 보드에 의한 엄격한 메모리 제약에 가능하면 피해야한다, 힙 할당을 필요로한다.

+0

당신은 Matteo를 얻습니다, Arduino 프로젝트를위한 것임을 알아 줘서 고마워요. – fuzz

1
int i = 42; 
char buf[30]; 
memset (buf, 0, sizeof(buf)); 
snprintf(buf, sizeof(buf)-1, "%d", i); 
// now buf contains the "42" string. 
0

이 하나를 시도

#include <iostream> 

int GSM_BAUD_RATE; 
GSM_BAUD_RATE = 4800; 
char text[256]; 

sprintf(text, "GSM Shield running at %d baud rate.", GSM_BAUD_RATE); 

Serial.println(text); 
3

UPDATE :이 원래의 질문에 대한 대답, 그것이 아두 이노를 언급 업데이트되기 전에. 비 임베디드 시스템에 대한 정답이므로 그대로 두겠습니다.

stringstream을 사용하여 형식이 지정된 문자열을 만들고 그 중 string을 추출 할 수 있습니다.

#include <sstream> 

std::ostringstream s; 
s << "GSM Shield running at " << GSM_BAUD_RATE << " baud rate."; 

Serial.println(s.str().c_str()); // assuming `println(char const *);` 
+0

나의 추측이 맞다면 그 코드는 Arduino 프로젝트를위한 것이고 그곳에는 ''을 사용할 수 없다. (그렇다고하더라도 힙 할당이 필요하고 총 RAM이 2KB라면 좋은 생각이 아니다.) –

+0

@MatteoItalia Correct. – fuzz

+0

그럴 경우 다른 답변 중 하나를 원할 것입니다. 전체 표준 라이브러리가 있고 약간의 메모리 할당을 할 수 있다면 더 안전한 옵션입니다. –

1

당신은 이제 stringstream을 사용할 수

int main() 
{ 
    int myInt = 12345; 
    std::ostringstream ostr; 
    ostr << myInt; 
    std::string myStr = "The int was: " + ostr.str(); 
    std::cout << myStr << std::endl; 
} 
0

이 일의 C++ 방법은 부스트 ​​: : 형식에게 있습니다

std::string str = "GSM blah blah "; 
str+= boost::str(boost::format("%d") % 4800); 
str+= "blah blah"; 
+0

나는 그가 Arduino 보드에서 부스트를 사용하고 싶지 않을 것이라고 확신한다. –

+0

IIRC는 Arduino 프로젝트에서 완전히 사용할 수없는 표준 라이브러리를 필요로합니다. 또한,'std :: string'에는 힙 할당이 필요합니다. 이것은 좋은 생각이 아닙니다. –

+0

(덧붙여서 "헤더 만"이 "약간의 런타임 비용"을 의미 할 때?) –