Почему аргумент принимает & quot; текст & quot; а не строковая переменная?

Я пытаюсь объединить целые числа x y z из акселерометра на микробите в строку, а затем отправить его на последовательный порт. Я использую c ++ в онлайн-компиляторе mbed здесь с библиотекой microbit DAL.

uBit.init();
uBit.serial.baud(115200);

MicroBitI2C i2c = MicroBitI2C(I2C_SDA0, I2C_SCL0);
MicroBitAccelerometer accelerometer = MicroBitAccelerometer(i2c);while(1) {

int x=uBit.accelerometer.getX();
int y=uBit.accelerometer.getX();
int z=uBit.accelerometer.getX();

stringstream result;
result << x << "," << y << "," << z;
uBit.serial.send(result.c_str());
uBit.serial.send("\r\n");
}

однако result.c_str () дал мне ошибку Error: у класса «std :: basic_stringstream, std :: allocator>» нет члена «c_str» в «main.cpp», строка: 26, столбец: 34
Скриншот

-6

Решение

Это, вероятно, потому, что метод send только занимает const char* в качестве аргумента, а не std :: string. Пытаться:

uBit.serial.send(result.c_str());

редактировать:

Теперь ваш код изменился, и в результате получается поток строк:

uBit.serial.send(result.str().c_str()),

3

Другие решения

Других решений пока нет …