小编Jus*_* R.的帖子

Powershell中管道参数的默认值列表

我有一个Powershell脚本,可以读取管道中的值:

PARAM (
    [Parameter(ValueFromPipeline = $true)] 
    $s
)

PROCESS {
    echo "* $s"
}
Run Code Online (Sandbox Code Playgroud)

工作得很好:

PS> my.ps1 foo
*foo

我希望脚本具有默认值列表,因为最常见的用法将始终使用相同的值,并将它们存储在默认值中将是最方便的.我做了通常的任务:

PARAM (
    [Parameter(ValueFromPipeline = $true)] 
    $s = 'bar'
)

PROCESS {
    echo "* $s"
}
Run Code Online (Sandbox Code Playgroud)

再次,工作得很好:

PS> my.ps1
*bar
PS> my.ps1 foo
*foo

但是,当将默认值设置为列表时,我会得到一些完全合理但完全不符合我要求的内容:

PARAM (
    [Parameter(ValueFromPipeline = $true)] 
    $s = @('bar', 'bat', 'boy')
)

PROCESS {
    echo "* $s"
}
Run Code Online (Sandbox Code Playgroud)

结果:

PS> my.ps1
*棒蝙蝠男孩

我期望:

PS> my.ps1
*bar
*bat
*boy

如何为每个默认值调用Process循环?(这与在Process中调用一个,并将当前主体包装在一个大的foreach循环中超过$ s有所不同).

parameters powershell default

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

如何从缓冲区填充std :: vector及其大小?

我有一个我认为是关于std :: vector类型的简单问题.基本问题很简单:我有一个函数将数据流读入缓冲区(以及获取缓冲区的大小),然后将该数据作为向量返回.uint8_t修复了集合元素的类型.我的问题是,是否有更好的方法来填充矢量而不是走缓冲区?

这是我天真的,难以理解的代码:

uint8_t* buffer;
size_t size;
stream->readBuffer(buffer, size); // I don't own the stream class
std::vector<uint8_t> output(size);
for (size_t i = 0; i < currentChunkLength; i++)
{
    output.push_back(buffer[i]);
}
return output;
Run Code Online (Sandbox Code Playgroud)

c++ vector c++11

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

使用智能指针时内存泄漏

考虑以下功能:

unique_ptr<char> f(const wstring key, const unsigned int length)
{
    assert(length <= key.length());
    const wstring suffix = key.substr(length, key.length() - length);
    const size_t outputSize = suffix.length() + 1; // +1 for null terminator
    char * output = new char[outputSize];
    size_t charsConverted = 0;
    const wchar_t * outputWide = suffix.c_str();
    wcstombs_s(&charsConverted, output, outputSize, outputWide, suffix.length());
    return unique_ptr<char>(output);
}
Run Code Online (Sandbox Code Playgroud)

这里的目的是接受一个wstring,length从最后选择字符,并将它们作为C样式的字符串返回,该字符串包含在unique_ptr中(根据另一个库的要求 - 我当然没有选择那种类型:)).

我的一位同事顺便说过,他认为这会泄漏记忆,但他没有时间详细说明,我也看不到.任何人都可以发现它,如果是这样解释我应该怎么解决它?我可能有我的眼罩.

c++ memory-leaks

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

共享向量指针

请原谅这个简单的问题,但是我在理解指向集合的指针时遇到了麻烦。

想象一下,我有这个字节向量:

vector<uint8_t> n;
Run Code Online (Sandbox Code Playgroud)

我想将其存储在共享指针中。为什么需要(&)运算符的地址?

shared_ptr<vector<uint8_t>> m(&n);
Run Code Online (Sandbox Code Playgroud)

我认为构造函数会采用n。但是我也认为我对这里发生的事情有深刻的误解:)

c++ collections pointers shared-ptr

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

DirectX 如何确定缠绕顺序?

DirectX 如何确定多边形缠绕顺序?我特别好奇背面剔除。通过研究,我发现 DX 计算表面法线并取其与相机矢量的点积,如果大于 0 则剔除。

首先,这是 DirectX 实际采用的技术吗?其次,如果是这种情况,假设每个表面都有两个法线(一个与另一个相对),DirectX 如何知道使用哪一个法线?

directx 3d direct3d culling

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

处理几乎所有C++中的异常

我有一个try块,它目前捕获所有异常:

try
{
    // do some work
}
catch (std::exception &ex)
{
    // log ex
}
Run Code Online (Sandbox Code Playgroud)

但是,我不想捕获访问冲突.我可以将其指定为我的处理程序的异常(可以这么说)吗?或者我应该先抓住它并重新抛出它?

c++ exception-handling c++98

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

Python商与余数

python 2.6 docs声明x % y被定义为x/y的剩余部分(http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex).我不知道究竟发生了什么,如:

for i in range(2, 11):
    print 1.0 % i
Run Code Online (Sandbox Code Playgroud)

打印"1.0"十次,而不是像我预期的那样"0.5,0.333333,0.25"等(1/2 = 0.5等).

python modulo

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