字符串連接在c++是容易,只需使用+
操作:
std::string s1("Hello");
std::string s2("World");
std::string concat = s1 + s2; // concat will contain "HelloWorld"
如果需要高級格式或數字格式,你可以使用std::ostringstream
等級:
std::ostringstream oss;
oss << 1 << "," << 2 << "," << 3 << ", Hello World!";
std::string result = oss.str(); // result will contain "1,2,3, Hello World!"
因此,對於您的情況,您可以使用這樣的:
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0/421.0);
std::ostringstream oss;
oss << std::fixed << std::setw(6) << std::setprecision(2) << voltage;
std::string v = oss.str();
std::string _outbuffer = "VL" + v;
Serial.println(v.c_str());
Serial.println(_outbuffer.c_str());
注:
要使用的iostream操縱功能(如提及std::setw()
等),你需要#include <iomanip>
除了#include <ostringstream>
。
您確定您不打算將其標記爲'C'嗎? – bstamour
你爲什麼用這個'dtostrf()'函數打擾?你應該可以做'sprintf(_outbuffer,「VL%6.2f」,voltage);'(你可能需要弄亂那個格式說明符才能以你想要的方式顯示浮點數)。另外考慮使用'snprintf()',這樣你不會溢出'_outbuffer'。 – Praetorian
實際確定[tag:c]或[tag:C++] !!下壓壓力,因爲它的問題不適合[標籤:C++] ...任何你不能使用'std :: string'或其他C++標準庫類的原因,如上所述? –