使用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);
至於到底發生了什麼WH帶你做你要做的:
"twittermood.php?status=sendTweet&setting1="
是右值的類型char[43]
,這隱式轉換爲const char*
的,一個指向第一個字符。爲此,你添加一個整數,通過這個形成一個新的指針類型const char*
指向一些或多或少的隨機存儲器位置。我想你會試圖將這個作爲char*
傳遞給你的API函數,其中const
將不得不丟棄。
但是,C++編譯器絕不會爲了您自己的利益而隱式刪除const
。
來源
2011-12-07 18:14:51
sbi
既然你不熟悉C++,我會推薦[一本很好的C++入門書](http://stackoverflow.com/q/388242/46642)。 –
在這個世界上,這是不是一個真正的問題?我非常同情所有對經驗豐富的C++程序員的反感,他們將無知的Java編程人員釋放到C++世界中,並且看到了我對這些代碼的分享 - 但根據規則這是一個合法的問題,作爲一個SO問題,它不是壞的一個。 – sbi
對於我們的Java程序員來說,從Java到C/C++是非常棘手的。儘管我很想學習C/C++,但我正在Arduino中做一個項目,並用指針來解決這個小問題。我沒有想到會得到這樣的迴應並且反對票,並且基本上被告知F關閉並閱讀C++書籍。 – unleashed