小编Smi*_*thy的帖子

在C++ 11中延迟启动一个线程

我正在进入C++ 11线程并遇到了问题.

我想将一个线程变量声明为全局并稍后启动它.

然而,我见过的所有例子似乎都是立即启动线程的

thread t(doSomething);
Run Code Online (Sandbox Code Playgroud)

我想要的是

thread t;
Run Code Online (Sandbox Code Playgroud)

并稍后启动该帖子.

我试过的是

if(!isThreadRunning)
{
    thread t(readTable);
}
Run Code Online (Sandbox Code Playgroud)

但现在是块范围.所以我想声明t然后稍后启动线程,以便其他函数可以访问t.

谢谢你的帮助.

c++ multithreading c++11

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

解释字符串修剪功能

我遇到了下面的代码,但需要一些帮助来理解代码.假设字符串s在任一侧都有空格.

string trim(string const& s){
   auto front = find_if_not(begin(s), end(s), isspace);
   auto back = find_if_not(rbegin(s), rend(s), isspace);
   return string { front, back.base() };
}
Run Code Online (Sandbox Code Playgroud)

作者说,后面指向最后一个空格的末尾,而前面指向第一个非空白字符.所以back.base()被调用但我不明白为什么.

另外,在return语句中跟随字符串的花括号是什么?

c++ string c++11 c++14

21
推荐指数
1
解决办法
751
查看次数

将 JSON 对象存储到 C++ 映射

我需要你们的帮助。

目前我正在使用 cJSON 来解析格式化为 Json 标准的数据。

下面的数据是数据的示例。

{
    "time" : {              
        "timezone" : string,
        "ntpservers" : array<string>
    },
    "datetime" : {
        "value" : "2013-10-23 03:35:45.182042",
        "space-custom-class" : "datetime.datetime"
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我不知道如何将数据分解为键值对并将它们存储在地图中。我可以看到“时间”是一个键,但值是一个字典,所以我如何将其存储为“时间”的值,这适用于“日期时间”键。我知道这涉及到一些迭代,但我被困住了。因为值可以是基本类型、数组或字典,所以值应该是像模板这样的通用对象吗?一些例子会非常有帮助。

预先感谢您的任何帮助。

c++ json dictionary

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

用C++构造向量

我最近遇到了这个代码,但不太明白发生了什么.

auto c = vector<int> {};
Run Code Online (Sandbox Code Playgroud)

返回的向量构造函数是什么?

然后这段代码:

c = vector<int> {1,2,3,4,5 };
Run Code Online (Sandbox Code Playgroud)

第二个c是与初始位置不同的内存位置c吗?

c重新初始化时是否会调用析构函数?

我搜索了互联网,但找不到上述代码的任何示例.

以上是如何不同的

vector<int> c {};
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

c++ vector c++11

4
推荐指数
1
解决办法
279
查看次数

如何将 read() 设置为非阻塞模式

我目前在像这样调用 read() 时遇到问题:

unsigned char byData[1024] = {0};
ssize_t len = read(fd, byData, sizeof(byData));
Run Code Online (Sandbox Code Playgroud)

其中 fd 是文件描述符。

read() 阻塞,这不是我想要的。有没有一种简单的方法可以将读取设置为非阻塞或超时?该代码与inotify 一起使用。

谢谢你的帮助。

linux file-io

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

与C函数混合时C++ unique_ptr错误

我正在混合C和C++代码,我遇到了问题.下面是无法编译的代码:

unique_ptr<char[]> buf(new char[buflen]);
snprintf(buf, buflen, procfd, fd);
Run Code Online (Sandbox Code Playgroud)

导致错误:

wrapper_current.cpp:85:37:错误:不能转换‘std::unique_ptr<char []>’‘char*’用于参数"1"到‘int snprintf(char*, size_t, const char*, ...)’

我认为这unique_ptr看起来像是指向使用它的任何东西的正常指针.这有解决方法吗?如果snprintf无法使用那么是否有一些模拟的C++方法snprintf

c++ c++11

2
推荐指数
1
解决办法
332
查看次数

从C#中的静态Main传递参数

我是C#的新手,在将字段从静态Main方法传递给另一个方法时遇到了问题.

这是代码.我在相关行的末尾复制了错误.使用VS2012.

namespace SpaceApiTest
{
    class SpaceApiTest
    {
        static void Main(string[] args)
        {
            Input input = new Input();
            input.debug = true; // error CS1513: } expected

            public int getIp(ref Input input)
            {
                input.ip.Add("192.168.119.2");
                return 0;
            }

            SpaceApiTest st = new SpaceApiTest();

            st.getIp(input); // error CS1519: Invalid token '(' in class, struct, or interface  
                                  member declaration
                               // Invalid token ')' in class, struct, or interface member declaration
         }
    }

    public struct Input
    {
        public string ip;
        public string token;
        public bool …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio-2012

0
推荐指数
1
解决办法
240
查看次数