- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
sizeof(T2)。两种类型都是普通旧数据。现在,我想用 v2 的字节替换 v1 的第 k、k+1、... k+siz-6ren">
我有两个值 v1 和 v2,分别是 T1 和 T2 类型,sizeof(T1)>sizeof(T2)。两种类型都是普通旧数据。现在,我想用 v2 的字节替换 v1 的第 k、k+1、... k+sizeof(T2)-1 个字节。
C++ 本身并没有在语言中提供这种功能,据我所知在标准库中也没有(至少,没有直接提供)。一般实现此方法的最佳方法是什么?即实现:
template<typename T1, typename T2>
void replace_bytes(T1& v1, T2 v2, std::size_t k)
或至少
template<typename T1, typename T2, std::size_t k>
void replace_bytes(T1& v1, T2 v2)
?
我的想法是:
注意事项:
k
太高,这里就会有 UB(或者我们可以检查它不是太高)。最佳答案
// needed include files
#include <iostream> // for cout
#include <stdexcept> // for runtime_error
#include <cstring> // for memcpy
// generic template function that takes 3 arguments
// 1 destination object
// 2 source object
// 3 from which byte to start in the destination
template<class T1, class T2>
void replace_bytes ( T1& t1, const T2& t2, std::size_t k )
{
// at compile time, store the size of T1 type in t1_size
constexpr std::size_t t1_size = sizeof(T1);
// at compile time, store the size of T2 type in t2_size
constexpr std::size_t t2_size = sizeof(T2);
// if we copy t2 bytes to t1, do we run out of memory ?
if ( k + t2_size > t1_size )
{
throw std::runtime_error("Can't copy out of bounds.");
}
// do the copying, casting is required for proper pointer arithmitic
std::memcpy( (void*) (((char*)&t1)+k), (const void*) &t2, t2_size );
}
int main()
{
int x = 0;
char c = 10;
replace_bytes(x, c, 0);
std::cout << x << std::endl;
}
代码的干净版本(无注释):
#include <iostream>
#include <stdexcept>
#include <cstring>
template <class T1, class T2>
void replace_bytes ( T1& t1, const T2& t2, std::size_t k )
{
constexpr std::size_t t1_size = sizeof(T1);
constexpr std::size_t t2_size = sizeof(T2);
if ( k + t2_size > t1_size )
{
throw std::runtime_error("Can't copy out of bounds.");
}
std::memcpy( (void*) (((char*)&t1)+k), (const void*) &t2, t2_size );
}
int main()
{
int x = 0;
char c = 10;
replace_bytes(x, c, 0);
std::cout << x << std::endl;
}
关于c++ - 我应该如何将一个值插入另一个的 "middle"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55888672/
我在一个 anchor 内有一个内联 block 元素(跨度),它的高度为 40 像素。我尝试将 span 垂直居中,但它的位置更可能靠近底部。它不在中间。我怎样才能真正垂直居中该跨度? JSFidd
在我的 HTML 中,我有一个 div,它有三个 div 作为子元素。我想让第二个和第三个 child (分别是文本和按钮)居中对齐。 Some Text
当使用浏览器网络检查器时,我遇到了 CSS 属性 vertical-align 的两个不同的非标准属性。 -webkit-baseline-middle 仅在 Chrome 中可用,而 -moz-mi
下面的方法不会编译: public K test(K a, K b) { return a.test(); //a.test() returns Middle } 如果我们将K设置为
我有三列,中间列有一个按钮,我想在中间垂直对齐。 Cli
试图解决要求的家庭作业问题:更改姓名,以便姓在前。示例:“Mary Jane Lee”将返回“Lee, Mary Jane”。如果名称中没有空格,则原样返回。 经过一些研究,我似乎可以使用 Split
我需要使用 IE11 在 SVG 中完美地居中文本元素。 预期结果(所有 Evergreen 浏览器): IE11 结果: //SVG 代码: 1 Codepen 最佳答案
我有一个结构数组,这些结构基本上是形成一条边的两个点。由于性能,我使用结构。 现在我有对象 A 保存边缘和这个对象中的一个方法来告诉另一个对象 B 关于这个边缘数组中的连续边缘列表。 边缘: e0 e
我试图将两个链接垂直对齐到 Logo 的两边中间,但它似乎不起作用。此外,我想让它成为一个响应式导航,两个链接都以 Accordion 下拉方式显示在 Logo 下方。我一直在到处寻找解决方案,但找不
据我所知,vertical-align: middle; CSS 属性仅适用于 display 选项设置为 的元素表格单元格。 那么为什么 vertical-align 在 button 元素上被接受
我有两个值 v1 和 v2,分别是 T1 和 T2 类型,sizeof(T1)>sizeof(T2)。两种类型都是普通旧数据。现在,我想用 v2 的字节替换 v1 的第 k、k+1、... k+siz
直播:http://jsfiddle.net/8hAv3/ #main { width: 100px; height: 100px; background-color: red
jsFiddle:http://jsfiddle.net/2CRZP/ 我想使用 vertical-align:middle 或其他东西 (CSS) 将灰色框放在屏幕中间。
表格和表格单元格不起作用。我将表格的高度设置为 100% 并将表格单元格设置为自动。然后我尝试将 table-cell 设置为 vertical-align middle 100% 宽度但不起作用。我
我正在尝试编写一个函数来 找到图片的高度 执行计算(200px - 图片高度) 为每个不同的缩略图添加一个 css 样式(.imgk{margin-top:"calculated value";})。
我想将 img 元素放在 div.partners-slider 的中间。这是一个响应式 slider ,我无法设置固定高度。有什么建议吗? jsfiddle HTML
我试图将此文本区域的标签对齐到文本框的中间,但它不起作用。输出看起来像这样: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx
在下面的测试用例中,替代文本水平居中,但它固定在框的顶部。我如何在中间获取它? 最佳答案 表格的一个优点是它们提供跨浏览器的垂直居中。 DIV 没有。
我正在为本质上是一个 n 层协作应用程序(不是企业级,只是一个具有显着增长潜力的小型项目)开发一种新架构,我已经在尝试训练自己使用 IoC,并且在某种程度上, TDD,而且我想知道,一般来说,手动编写
我有一个想法,但不知道是否可以这样做: 是否可以编写一个 USB 摄像头驱动程序,该驱动程序可以将视频源多路复用到任何需要它的软件? 一种“中间人”司机:) 最佳答案 如果需要 Linux 驱动程序,
我是一名优秀的程序员,十分优秀!