下面的字符串是否包含空终止符'\ 0'?
std::string temp = "hello whats up";
Run Code Online (Sandbox Code Playgroud)
谢谢!:)
我完全混淆了在C++中删除东西的问题如果我声明了一个对象数组并且我使用了该clear()函数.我可以确定内存已经发布了吗?
例如 :
tempObject obj1;
tempObject obj2;
vector<tempObject> tempVector;
tempVector.pushback(obj1);
tempVector.pushback(obj2);
Run Code Online (Sandbox Code Playgroud)
我可以安全地打电话清除以释放所有内存吗?或者我是否需要逐个删除才能删除?
tempVector.clear();
Run Code Online (Sandbox Code Playgroud)
如果将此场景更改为对象指针,答案是否与上述相同?
vector<tempObject> *tempVector;
//push objects....
tempVector->clear();
Run Code Online (Sandbox Code Playgroud) 我想获取客户端地址,但我不确定如何将sockaddr结构转换为sockaddr_in?
struct sockaddr_in cliAddr, servAddr;
n = recvfrom(sd, msg, MAX_MSG, 0,(struct sockaddr *) cliAddr,sizeof(cliAddr));
//i tried this but it does not work
struct sockaddr cliSockAddr = (struct sockaddr *) cliAddr;
char *ip = inet_ntoa(cliSockAddr.sin_addr);
Run Code Online (Sandbox Code Playgroud)
提前致谢!:)
我发现问题让我走到了这一步: 从sockaddr结构中获取IPV4地址
很抱歉为了避免混淆,这是我真正的实现,其中"ci"是存储指针(如sockaddr_in)的对象.
/* receive message */
n = recvfrom(*(ci->getSd()), msg, MAX_MSG, 0,(struct sockaddr *) ci->getCliAddr(),ci->getCliLen());
char *ip = inet_ntoa(ci->getCliAddr().sin_addr);
Run Code Online (Sandbox Code Playgroud)
我会收到以下错误:
udpserv.cpp:166: error: request for member ‘sin_addr’ in ‘ci->clientInfo::getCliAddr()’, which is of non-class type ‘sockaddr_in*’
Run Code Online (Sandbox Code Playgroud) 我需要在ubuntu中调用HTTP请求我该怎么办?我似乎无法找到关于如何做到这一点的答案?
如何在不调用像lynx这样的浏览器的情况下运行以下URL?
http://www.smsggglobal.com/http-api.php?action=sendsms&user=asda&password=123123&&from=123123&to=1232&text=adsdad
Run Code Online (Sandbox Code Playgroud) 我很困惑哪个更有效率?
由于我们可以直接访问地图,为什么我们需要使用find?
我只需要知道哪种方式更有效.
#include <iostream>
#include <map>
using namespace std;
int main ()
{
map<char,int> mymap;
map<char,int>::iterator it;
mymap['a']=50;
mymap['b']=100;
mymap['c']=150;
mymap['d']=200;
//one way
it=mymap.find('b');
cout << (*it).second <<endl;
//another way
cout << mymap['b'] <<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!:)
我应该使用哪个STL容器:
例如:数据集(4,10,15)如果我想找到最接近9的数字,那么它应该返回10.
我想过使用矢量,但矢量插入和移除是昂贵的.
vector<int>
Run Code Online (Sandbox Code Playgroud)
如果我要使用list,我必须在到达数据之前访问O(n)元素.
list<int>
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用set,因为如果它被排序会很好,但我不太确定使用SET的效率
所以我希望有人能给出一个好的解决方案!
我有一个函数,如果找到一个对象,它返回一个迭代器.
现在我有一个问题.我如何解决通知调用此函数的对象未找到该对象的问题?
vector<obj>::iterator Find(int id, int test)
{
vector<obj>::iterator it;
aClass class;
for(it = class.vecCont.begin(); it != class.vecCont.end(); ++it)
{
if(found object) //currently in psuedo code
return it;
}
return ???? // <<< if not found what to insert here?
}
Run Code Online (Sandbox Code Playgroud)
我需要改变我的数据结构吗?
提前致谢!:)
我有以下代码,这是完美的.
目标:给定一个数字n,找到n的下一个和前一个数字.
基于以下示例:如果n = 50,那么我将分别获得60和40.
我可以通过使用upper_bound获得60.但是我怎么在50之前得到一个数字我似乎无法找到提供的算法来做到这一点.
set<int> myset;
set<int>::iterator it,itlow,itup;
for (int i=1; i<10; i++) myset.insert(i*10); // 10 20 30 40 50 60 70 80 90
itup=myset.upper_bound (50); //
cout << "upper_bound at position " << (*itup) << endl;
//output: 60
Run Code Online (Sandbox Code Playgroud)
参考http://www.cplusplus.com/reference/stl/set/lower_bound/,它说upper_bound"返回一个指向容器中第一个元素的迭代器,它不会比x小 ",但我确定它有其他东西指向比x小的东西.
提前致谢!:)
如何连接或复制char*?
char* totalLine;
const char* line1 = "hello";
const char* line2 = "world";
strcpy(totalLine,line1);
strcat(totalLine,line2);
Run Code Online (Sandbox Code Playgroud)
此代码产生错误!
segmentation fault
Run Code Online (Sandbox Code Playgroud)
我猜我需要为totalLine分配内存?
另一个问题是,以下复制内存或复制数据?
char* totalLine;
const char* line1 = "hello";
totalLine = line1;
Run Code Online (Sandbox Code Playgroud)
提前致谢!:)