小编Yos*_*Yos的帖子

使用批处理文件读取包含空格的注册表值

我有一个读取注册表值的批处理文件.

然而,我正在阅读的条目包含空格,我似乎只在设置变量时捕获第一个空格字符之前的所有内容.

set KEY_NAME="HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\My Entry"
set VALUE_NAME=Home

FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
    set ValueName=%%A
    set ValueType=%%B
    set Home=%%C
)

if defined ValueName (
    @echo Home = %Home%
) else (
    @echo %KEY_NAME%\%VALUE_NAME% not found.
)
Run Code Online (Sandbox Code Playgroud)

主注册表项实际上包含此字符串:"C:\ Program Files(x86)\ Dir1\Dir2",批处理文件仅捕获此:C:\ Program

有没有人知道如何解决这个问题?

谢谢

registry batch-file

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

C++ 和 Google 测试

我正在研究 Google Test 参数化测试。然而,它们看起来真的很好,除非我错过了一个技巧,否则我看不到你如何为每个测试使用一组不同的测试数据。我使用了一个在网上找到的示例,效果很好,但看起来我如果我想提供具有不同参数的 TEST_P,则需要创建一个新类,即 FooTest1、2、3、4 等,以便为每个类提供 INSTANTIATE_TEST_CASE_P。我想我一定错过了一些东西。

class FooTest: public ::testing::TestWithParam < int >{....};

TEST_P(FooTest, DoesBar)
{
    ASSERT_TRUE(foo.DoesBar(GetParam());
}

INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10)); 
Run Code Online (Sandbox Code Playgroud)

有人能确认这是否可以通过不同的方式实现吗?

谢谢

c++ googletest

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

如何深度复制Builder组件,例如TPanel,TButton等

有人知道如何深度复制构建器组件吗?

我的印象是我可以使用Assign函数,因为他们没有可用的复制构造函数?

我正在使用Assign,但是它不喜欢它用于TPanel(对于Graphics :: TBitmap可以正常工作)。我得到的错误是“无法将TPanel分配给TPanel”?

有人对我应该怎么做有任何想法吗?一段代码如下:

CConfigComponentPanel::CConfigComponentPanel( const CConfigComponentPanel& rkConfigComponentPanel ):
CConfigComponent( rkConfigComponentPanel ),
m_pkPanel( new TPanel(this) )
{
    m_pkPanel->Assign( rkConfigComponentPanel.m_pkPanel );
}
Run Code Online (Sandbox Code Playgroud)

c++ c++builder

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

"无法将'MyClass'转换为'bool'"模板编程出错

我正在玩模板并试过以下但是'无法将'MyClass'转换为'bool'错误?

#include "Unit2.h"
using namespace std;

template <class T>
T GetMax (T a, T b) {
  T result;
  result = (a > b) ? a : b;
  return (result);
}

int main () {
  MyClass k1( 10, "A" );
  MyClass k2( 50, "B" );
  MyClass k3( 0,"" );
  k3 = GetMax<MyClass>(k1,k2);

  cout << k3.GetName() << endl;

  return 0;
}
//---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我为myclass定义了一个>运算符,如下所示:

MyClass& MyClass::operator>(MyClass &rhs)
{
    MyClass& rkReturn = ( m_iSize > rhs.m_iSize ) ? *this : rhs;
    return rkReturn; 
}
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

基本语法数组声明

如果我在声明一个新的数组lint抱怨时使用int作为数组大小.解决此问题的正确方法是什么:

我可以静态地将int转换为unsigned,但看起来有点奇怪......

在不改变数组使用和整数大小的情况下解决这个问题的最佳方法是什么?

MapItemPtr* pMapItems = new MapItemPtr[ (unsigned int)iRecordCount ];
Run Code Online (Sandbox Code Playgroud)

能做:

MapItemPtr* pMapItems = new MapItemPtr[static_cast<unsigned int>( iRecordCount )];
Run Code Online (Sandbox Code Playgroud)

这是解决lint错误的正确方法:行3811错误737:从int到unsigned int的升级签名丢失

还是有更优雅的方式?

c++

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

标签 统计

c++ ×4

batch-file ×1

c++builder ×1

googletest ×1

registry ×1

templates ×1