使用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