Используйте std::string
, а не строки C.Используйте строковые потоки , вместо того, чтобы пытаться объединять не строковые значения в строки:
std::ostringstream oss;
oss << "twittermood.php?status=sendTweet&setting1=" << setting1;
use(oss.str()); // or use(oss.str().c_str());
Если для этого API действительно нужна строка не const
(учитывая, что длина строки даже не берется, я полагаю, что это просто ошибочный API, игнорирующий const
), скопируйте строку в буфер и передайте следующее:
const std::string& str = oss.str();
std::vector<char> buffer(str.begin(), str.end());
buffer.push_back('\0');
GETrequest(addr, port, &buffer[0], c);
Какчто действительно происходит, когда вы делаете то, что делаете:
"twittermood.php?status=sendTweet&setting1="
- это rvalue типа char[43]
, что неявнопреобразует в const char*
, указатель на первый символ .К этому вы добавляете целое число, тем самым формируя новый указатель типа const char*
, указывающий на некоторую более или менее случайную ячейку памяти .Я полагаю, вы пытаетесь передать это как char*
в вашу функцию API, для которой const
должно быть отброшено .
Компилятор C ++, однако, никогда не будет неявно отбрасывать const
- для вашего же блага.