小编Cod*_*ict的帖子

保留YAML中的新行

如何格式化这样的YAML文档,以便PyYAML可以正确解析它?

Data: Some data, here and a special character like ':'
      Another line of data on a separate line
Run Code Online (Sandbox Code Playgroud)

我知道':'字符是特殊的所以我必须用引号括起整个东西:

Data: "Some data, here and a special character like ':'
      Another line of data on a separate line"
Run Code Online (Sandbox Code Playgroud)

为了添加新行,我必须添加'\n':

Data: "Some data, here and a special character like ':'\n
      Another line of data on a separate line"
Run Code Online (Sandbox Code Playgroud)

有没有格式化YAML文档,所以我不必添加\n's以便有一个新行?

yaml pyyaml

20
推荐指数
2
解决办法
7910
查看次数

AST的访客模式

我正在尝试使用访问者模式来执行我的编译器的AST操作,但我似乎无法找到一个可以正常工作的实现.

AST课程摘录:

class AstNode
{
public:
    AstNode() {}
};

class Program : public AstNode
{
public:
    std::vector<std::shared_ptr<Class>> classes;

    Program(const std::vector<std::shared_ptr<Class>>&);
    void accept(AstNodeVisitor& visitor) const { visitor.visit(*this); }
};

class Expression : public AstNode
{
public:
    Expression() {}
};

class Method : public Feature
{
public:
    Symbol name;
    Symbol return_type;
    std::vector<std::shared_ptr<Formal>> params;
    std::shared_ptr<Expression> body;

    Method(const Symbol&, const Symbol&, const std::vector<std::shared_ptr<Formal>>&,
            const std::shared_ptr<Expression>&);
    feature_type get_type() const;
};

class Class : public AstNode
{
public:
    Symbol name;
    Symbol parent;
    Symbol filename;
    std::vector<std::shared_ptr<Feature>> features; …
Run Code Online (Sandbox Code Playgroud)

c++ visitor-pattern

8
推荐指数
1
解决办法
2406
查看次数

如何停止运行阻塞永久循环的 QThread?

我有一些我一直在试验的粗略代码:

someserver.cpp(图形用户界面)

#include "server.h"
#include "ui_server.h"

Server::Server(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Server)
{
    ui->setupUi(this);
}

Server::~Server()
{
    delete ui;
}

void Server::onBtnStartClicked()
{
    QThread worker; 
    worker.start(); // Start worker thread that goes into an infinite loop with a blocking call
}

void Server::onBtnExitClicked()
{
    // How do I cleanly stop worker from running?
    QApplication::quit();
}
Run Code Online (Sandbox Code Playgroud)

worker.cpp

#include "worker.h"

Worker::Worker(QObject *parent) :
    QThread(parent)
{
}

void Worker::run()
{
    for (;;)
    {
        // a blocking IO call here like pipe, or msgrcv …
Run Code Online (Sandbox Code Playgroud)

c++ linux qt

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

Haskell 中的 DFS 实现

由于我不知道如何在 Haskell 中编写 DFS,我已经头撞墙了几个小时。

我的图被实现为一个邻接列表,其中键(或图的节点名称)是列表索引:

0 -> 1
1 -> 0, 2
2 -> 1

As a Haskell list: [[1],[0,2],[1]]
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我的 DFS 代码:

dfs graph visited node = helper graph visited (graph !! node) node
    where helper _ _ visited [] _ = visited
          helper graph visited (x:xs) currNode
            | elem x visited = helper graph visited xs currNode
            | otherwise = dfs graph (currNode:visited) x
Run Code Online (Sandbox Code Playgroud)

我知道问题在于它不会回溯并在到达图的一端后尝试另一个相邻节点。我一直在尝试修改守卫的其他部分以试图修复它,但似乎无法提出一些可行的方法。我能做些什么来解决这个问题?

haskell depth-first-search

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

如何将.doc或.docx文件转换为.txt文件

我想知道如何通过Java将Word .doc/.docx文件转换为文本文件.我知道有一个选项,我可以通过Word本身做到这一点,但我希望能够做到这样的事情:

java DocConvert somedocfile.doc converted.txt
Run Code Online (Sandbox Code Playgroud)

谢谢.

java ms-word

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

接下来我应该使用哪种C++材料?

我在本地大学里一直在做C++ 3-4个月,而且我正在使用Accelerated C++进行额外的阅读/学习,到目前为止,我已经"完成"了它.现在,我想知道接下来哪本书会帮助我在C++中更好地编写代码.

我环顾四周,发现了这个:The Definitive C++ Book Guide and List

我很抱歉,如果这个问题对你们大多数人来说可能看起来很愚蠢,但我现金有点紧张,我真的想投资一些对我来说"正确"的东西.

现在,我只知道(类,模板,STL,迭代器,动态内存管理)等基础知识.

你有什么建议吗?我应该专注于STL还是模板..?或者我应该阅读像C++编程语言这样的东西?

谢谢!

c++

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

将批处理文件转换为exes

我想知道是否可以使用C++将批处理文件转换为可执行文件?我在这里有很多批处理文件,我想将它们转换为可执行文件(主要用于混淆代码).我知道有第三方工具可以做到这一点但我认为这对编程项目来说是一个很好的机会.

我不知道从哪里开始.我需要编写某种解析器或其他东西吗?

c++ windows batch-file

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

hg服务只是挂在终端

我已经开始在我的个人项目中使用Mercurial,我现在正在浏览Joel的教程:http://hginit.com/02.html

问题是当我在hg serve终端输入时,它只是挂起.其他命令如hg init完美.有谁知道发生了什么?

我通过这样做安装了mercurial: sudo apt-get install mercurial meld

ubuntu mercurial

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

使用size_t的负值切换

如果我有以下代码段:

size_t num = -1;

switch(num) {
    case -1:
        printf("Minus one!\n");
        break;
    default:
        printf("Not minus one!\n");
}
Run Code Online (Sandbox Code Playgroud)

为什么程序会打印出来Minus One!?在声明中被num转换为a ?是否定义了此行为?size_tswitch

c

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

将带有十六进制值的char转换为String

如果我有如下字符:

wchar_t c = '\x0A'
Run Code Online (Sandbox Code Playgroud)

什么是一种简单的方法来转换它,使它变成如下:

wchar_t dst[] ==> "0A"
Run Code Online (Sandbox Code Playgroud)

基本上,c的十六进制值变为字符串值.

c

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

WriteFile 与 IO 完成端口问题

我有这段代码,它基本上使用 IO 完成端口写入文件 5 次。正如你所猜到的,它的效果不是很好。问题是我希望将“hello”写入文件 5 次,但最终总是只写入一个“hello”。我很困惑,因为程序打印了 5 次“写了 5 个字节”,所以我认为写操作没有问题。

任何人都可以看到这个问题吗?

#include <windows.h>
#include <stdio.h>

#define IOCP_NOMORE 3
#define IOCP_WRITE 1

HANDLE hWriteIoCp;

typedef struct _OVERLAPIOINFO {
    OVERLAPPED overlapped;
    HANDLE hFile;
} OVERLAPIOINFO;

HANDLE CreateNewCompletionPort()
{
    return CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
}

BOOL AssociateFileCompletionPort(HANDLE hIoPort, HANDLE hFile, DWORD completionKey)
{
    HANDLE h = CreateIoCompletionPort(hFile, hIoPort, completionKey, 0);
    return h == hIoPort;
}

DWORD WINAPI SaveFileWorkerThread(void *empty)
{
    ULONG_PTR completionKey;
    BOOL completionStatus;
    DWORD bytesTransferred;
    DWORD err;
    OVERLAPPED *overlap;
    OVERLAPIOINFO *info; …
Run Code Online (Sandbox Code Playgroud)

c windows io winapi io-completion-ports

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