小编mis*_*ter的帖子

std :: string是否包含null终止符?

下面的字符串是否包含空终止符'\ 0'?

std::string temp = "hello whats up";
Run Code Online (Sandbox Code Playgroud)

谢谢!:)

c++ string null

66
推荐指数
3
解决办法
6万
查看次数

C++删除矢量,对象,空闲内存

我完全混淆了在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)

c++ vector delete-operator

46
推荐指数
5
解决办法
15万
查看次数

如何将sockaddr结构转换为sockaddr_in - C++网络套接字ubuntu UDP

我想获取客户端地址,但我不确定如何将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)

c++ sockets ubuntu networking client

10
推荐指数
2
解决办法
2万
查看次数

Ubuntu中的HTTP请求

我需要在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)

browser url ubuntu http request

9
推荐指数
2
解决办法
3万
查看次数

STL MAP应该使用find()或[n]标识符来查找地图中的元素?

我很困惑哪个更有效率?

由于我们可以直接访问地图,为什么我们需要使用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)

提前致谢!:)

c++ stl map upperbound

9
推荐指数
2
解决办法
9752
查看次数

使用哪个STL容器?

我应该使用哪个STL容器:

  1. 定期插入和删除数据.
  2. 随机定期访问数据.

例如:数据集(4,10,15)如果我想找到最接近9的数字,那么它应该返回10.

  1. 我只存储一个整数.
  2. 它需要排序
  3. 可以转到100k数据集

我想过使用矢量,但矢量插入和移除是昂贵的.

   vector<int>
Run Code Online (Sandbox Code Playgroud)

如果我要使用list,我必须在到达数据之前访问O(n)元素.

   list<int>
Run Code Online (Sandbox Code Playgroud)

我正在考虑使用set,因为如果它被排序会很好,但我不太确定使用SET的效率

所以我希望有人能给出一个好的解决方案!

c++ containers stl

7
推荐指数
2
解决办法
2万
查看次数

7
推荐指数
1
解决办法
7020
查看次数

返回c ++迭代器

我有一个函数,如果找到一个对象,它返回一个迭代器.

现在我有一个问题.我如何解决通知调用此函数的对象未找到该对象的问题?

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)

我需要改变我的数据结构吗?

提前致谢!:)

c++ iterator vector

6
推荐指数
3
解决办法
7882
查看次数

使用STL Container设置upper_bound

我有以下代码,这是完美的.

目标:给定一个数字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小的东西.

提前致谢!:)

c++ stl set

5
推荐指数
1
解决办法
1344
查看次数

如何复制或连接两个char*

如何连接或复制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)

提前致谢!:)

c++ strcpy strcat

3
推荐指数
2
解决办法
2万
查看次数