小编suk*_*nej的帖子

C++ 枚举类 std::size_t 隐式转换

我通过创建一个枚举类定义了一个元组及其索引:

/** parameter { key ; value1 ; value1 ; } */
using Parameter = std::tuple<unsigned, unsigned, unsigned>;
enum class ParameterKey : std::size_t {
    KEY = 0,
    VALUE1 = 1,
    VALUE2 = 2
};
Run Code Online (Sandbox Code Playgroud)

现在我想从这个元组中得到一个值:

const auto& key = std::get<ParameterKey::KEY>(*parameterPointer);
Run Code Online (Sandbox Code Playgroud)

我认为从intto的隐式转换std::size_t是由: std::size_t语法确保的:

enum class ParameterKey : std::size_t {
    ....
}
Run Code Online (Sandbox Code Playgroud)

但我收到了这个错误

error: no matching function for call to ‘get<KEY>(std::tuple<unsigned int, unsigned int, unsigned int>&)’
Run Code Online (Sandbox Code Playgroud)

这工作正常,但它太啰嗦了:

const auto& key = std::get<static_cast<unsigned>(ParameterKey::KEY)>(*parameterPointer);
Run Code Online (Sandbox Code Playgroud)

c++ tuples std enum-class

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

C++ 二进制值的转义序列

有没有办法使用原始二进制值向字符串添加字符?我知道我可以做这样的事情:

std::string output3 = std::string("\x01\x00\x01...", ...);
Run Code Online (Sandbox Code Playgroud)

这是通过字符的十六进制值完成的。是否可以通过其 bin 值来指定字符?像这样的东西:

std::string output1 = std::string("\b11100101\b01000000", 7);
Run Code Online (Sandbox Code Playgroud)

注意:我知道\b有它的含义,这只是一个例子。

c++ string escaping

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

PHP - 确定 foreach 中最后一个循环的有效方法

每当我必须确定 foreach 循环中的当前循环是否是最后一个循环时,我会使用以下方法:

<?php
$i = count($myArray);
foreach ($myArray as $item) {
    /** code goes here... */
    $i--;
    if ($i == 0) {
        /** something happens here */
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

通常,这可以通过知道循环变量(first、last、...)在模板系统(例如 Latte、Smarty 等)中轻松完成。我的问题是:PHP 中是否有类似的功能?

关键是你必须创建$i变量,然后增加它并检查值。我只是想知道是否有更简单的解决方案可以让我的生活更轻松一些。:)

php foreach loops

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

C++将字符串转换为ASCII表示形式

我正在编写一个简单的数据包解析器.为了测试,我准备了以下格式的数据:

std::string input = "0903000000330001 ... ";
Run Code Online (Sandbox Code Playgroud)

我需要把它变成这样的东西

0x09 0x03 0x00 0x00 ...
Run Code Online (Sandbox Code Playgroud)

你能帮我解释一下我应该如何构建新的字符串吗?

我已经尝试过这些......

std::string newInput = "\x09\x03\x00 ... ";
std::string newInput = "\u0009\u0003\u0000 ...";
Run Code Online (Sandbox Code Playgroud)

但程序返回该字符串的大小只有两个.

std::cout << newInput.size() << std::endl;
 > 2
Run Code Online (Sandbox Code Playgroud)

我真的失踪或误解了一些东西......

c++

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

如何配置Clion编译gtkmm项目

我已经从 GTK 复制了一个示例项目

#include <gtkmm.h>

int main(int argc, char *argv[])
{
    auto app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");

    Gtk::Window window;
    window.set_default_size(200, 200);

    return app->run(window);
}
Run Code Online (Sandbox Code Playgroud)

当直接从终端编译时,它工作得很好:

g++ main.cpp -o simple `pkg-config gtkmm-3.0 --cflags --libs`
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用 Clion 进行编译时,它说

fatal error: gtkmm.h: No such file or directory
 #include <gtkmm.h>
Run Code Online (Sandbox Code Playgroud)

我的 CMakeLists.txt 看起来像这样:

cmake_minimum_required(VERSION 3.8)
project(songbook)

set(CMAKE_CXX_STANDARD 17)

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)

include_directories(${GTK3_INCLUDE_DIRS})
link_directories(${GTK3_LIBRARY_DIRS})

add_definitions(${GTK3_CFLAGS_OTHER})

set(SOURCE_FILES main.cpp)
add_executable(songbook ${SOURCE_FILES})

target_link_libraries(songbook ${GTK3_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

c++ gtkmm clion

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

将来C++标准库是否包含网络,字符串算法?

我不得不在我的工作中开始使用C++,实际上,我开始喜欢它.感谢斯科特迈耶斯的书,并没有那么难.但我讨厌标准库中包含的功能(不).将来会在D's Phobos库(https://dlang.org/phobos/)中有类似的功能集(例如)吗?

为什么没有使用字符串,JSON,TCP/IP,处理数组的功能的方法?我已经找到了一些关于网络的论文,等等,http://en.cppreference.com/w/cpp/experimental.但这些功能真的会进入STL标准库?如果是的话 - 何时?

注意:我知道Boost框架.有没有关于将它合并到标准库中的讨论?

c++ c++17 c++20

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

C++ 将日期时间转换为时间戳

我知道这些价值观

unsigned char year = 17; // means 2017
unsigned char month = 8;
unsigned char day = 25;
unsigned char hour = 14;
unsigned char minute = 23;
unsigned char second = 54; 
Run Code Online (Sandbox Code Playgroud)

我怎样才能将它们转换成unix时间戳?我不确定这是否unsigned char是表示该值的正确方法,我只需要每个值的大小为 1 个字节。

c++ datetime

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

lispworks和sbcl

首先,我被迫使用LispWorks,我想知道它实际使用了什么编译器,以及我是否可以在CLI中使用它.同样在LispWorks中有类似的方法defsystem,它们是以某种方式在环境中构建的还是它们形成了一个我可以在sbclREPL中实际加载的包(例如)?

lisp common-lisp lispworks

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

标签 统计

c++ ×6

c++17 ×1

c++20 ×1

clion ×1

common-lisp ×1

datetime ×1

enum-class ×1

escaping ×1

foreach ×1

gtkmm ×1

lisp ×1

lispworks ×1

loops ×1

php ×1

std ×1

string ×1

tuples ×1