小编Joh*_*nes的帖子

使用Int64进行位移

需要移位Int64变量.我正在从数据库文件中解析伪数学函数.变量是uint32或int32所以我确实将它们放入Int64中以平等地处理它们而不会丢失任何东西.在我的一个treenodes中,我需要将Int64移位.

不幸的是,移位运算符不适用于Int64.是否有一种我不知道的比特移位Int64的标准方法?

//Int32 Example works
int a32 = 1;
int b32 = 2;
int c32 = a32 >> b32;

//Int64 Example does not compile
Int64 a64 = 1;
Int64 b64 = 2;
Int64 c64 = a64 >> b64; //invalid operator
Run Code Online (Sandbox Code Playgroud)

.net c# bit-shift int64

6
推荐指数
2
解决办法
5758
查看次数

scanf格式说明符,用于从一组字符中读取零个或多个字符

对于读取字符串中的字符,我需要非常严格。

我有一系列空格,后跟一个字符,再一系列空格。
例如:" c ""c"""" "

我需要找到一种格式说明符,该格式说明符允许我忽略该字符,但前提是该字符是该特定字符,而不是其他任何字符。此序列" e "应中止。

我曾尝试过," %*[c] "但是在某些情况下我的单元测试失败了,这使我相信" %*[c] "正在寻找一个或多个'c'而不是零或多个'c'

我写了一个小例子来帮助更好地说明我的问题。请记住,这只是一个最小的示例。中心问题是如何解析数量为零或单个字符之一。

#include <stdio.h>
#include <string.h>

unsigned match(const char * formula){
    unsigned e = 0, found = 0, s;
    char del;
    int parsed, pos, len = (int) strlen(formula); 
    const size_t soc = sizeof( char );
    del = ' ';
    parsed = sscanf_s( formula, " \" %*[(] X%*[^>]>> %u %*[)] %c …
Run Code Online (Sandbox Code Playgroud)

c formatting scanf

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

将IEnume拆分为三个部分:"上方","项目","下方",效率高

IEnumerable<int> list = new[] { 1, 2, 7, 3, 11, 5 };
int item = (from x in list where (x == list.Max()) select x).First();
IEnumerable<int> above = from x in list where list.ToList().IndexOf(item) > list.ToList().IndexOf(x) select x;
IEnumerable<int> below = from x in list where list.ToList().IndexOf(item) < list.ToList().IndexOf(x) select x;
Run Code Online (Sandbox Code Playgroud)

我想找到一个元素IEnumerable并将其IEnumerable分成IEnumerable不再包含我找到的元素的s.上面的代码说明了我想要实现的结果,但是我必须将IEnumerable转换为List.

我觉得必须有一种方法可以使用LinQ和IEnumerable来做到这一点.如何才能做到这一点?

c# linq ienumerable

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

我怎么能告诉cppcheck跳过头文件

cppcheck扫描项目文件夹中的所有文件.

c:\projectfolder\main.c
c:\projectfolder\file.c
c:\projectfolder\file.h
c:\projectfolder\file_test.cc
Run Code Online (Sandbox Code Playgroud)

c:\projectfolder\file_test.cc 包含以下代码

#include "c:/gtest/gtest.h"

extern "C"
{
    #include "TMyStruct.h"
}

TEST(Stack, Overflow)
{
    TMyStruct unterTest;
    EXPECT_EQ(1, TMyStruct_Init(&unterTest));
    EXPECT_GE(unterTest.variable, 9000);
}
Run Code Online (Sandbox Code Playgroud)

file_test.cc包含gtest.h

C:\gtest\gtest.h
Run Code Online (Sandbox Code Playgroud)

不应测试C:\ gtest \中的所有文件.

我打电话

cppcheck.exe -ic:\gtest\ c:\projectfolder\ --enable=style --template="SomeError"
Run Code Online (Sandbox Code Playgroud)

file_test.cc从包含的c:\projectfolder\file_test.cc内容中找到并报告错误(详细信息:"太多#ifdef配置")

我怎么告诉cppcheck根本不看C:\ gtest\gtest.h?

googletest cppcheck

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

scanf格式忽略不相关的字符

我写了一个简短的示例代码来说明我的问题

#include <stdio.h>
#include <string.h>

unsigned parseAndCompareDouble(const char* inSTR, const char* inF, const char * expect, const char * outF){
    unsigned e = 0;
    char buffer[2000];
    double a = 0;
    if( 1 != sscanf_s( inSTR, inF, &a, sizeof(double) ) ) e += 1;
    if( (int) strlen(expect) != sprintf_s(buffer, 2000, outF, a) ) e += 1;
    if( 0 != strcmp(expect, buffer) ) e += 1;
    return e;
}

unsigned main( void )
{
    unsigned e = 0;
    const char * universalFormat …
Run Code Online (Sandbox Code Playgroud)

c scanf string-formatting

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

从sdl调色板表面创建OpenGL纹理(SDL_PIXELFORMAT_INDEX8)

我创建了一个bmp,并SDL_LoadBMP在检查生成的文件时使用来加载它,SDL_Surface我可以看到它的格式SDL_PIXELFORMAT_INDEX8

我想使用SDL表面来生成纹理glTexImage2D

通常,我只需要检查表面即可。

SDL_Surface * surface = SDL_LoadBMP(filename.c_str()); 
GLenum mode = 0;
Uint8 bpp = surface->format->BytesPerPixel;
Uint32 rm = surface->format->Rmask;
if (bpp == 3 && rm == 0x000000ff) mode = GL_RGB;
if (bpp == 3 && rm == 0x00ff0000) mode = GL_BGR;
if (bpp == 4 && rm == 0x000000ff) mode = GL_RGBA;
if (bpp == 4 && rm == 0xff000000) mode = GL_BGRA;

GLsizei width = surface->w;
GLsizei height = surface->h; …
Run Code Online (Sandbox Code Playgroud)

c++ opengl textures sdl-2

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

获取编译器错误CS0122 - 由于其保护级别,"成员"无法访问 - 同时尝试访问其他项目中的类

我试图掌握NUnit - 我已经安装它并在一个项目中成功运行它.我想保持生产代码与testcode分开,所以我在不同的项目中编写测试.测试项目链接到原始项目.(IDE C#Express 2010)

我的Testcode看起来像这样:

using NUnit.Framework;

namespace test.Import
{
    [TestFixture]
    class XMLOpenTest
    {
        [Test]
        public void openNotAPath(){
            try
            {
                production.Import.XMLHandler.open("Not A Path");
            }
            catch
            {
                Assert.Fail("File Open Fail");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过将production.Import.XMLHandler类公开来解决这个问题,但我不想更改我的生产代码以允许这种测试.

我该如何解决这个问题?我可以更改我的测试代码吗?是否有其他好方法可以在两个项目中分离测试和生产代码?互联网上有dummys的资源吗?

c# nunit compiler-errors

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

sscanf用法 - 如何验证已完成扫描与中止扫描

我的数据库提供了一个文本文件,其中包含"分隔符公式的开始和结束.公式集非常有限,一旦确定就很容易实现.我尝试使用scanf来获取参数,我想使用分隔符"来提供scanf失败的机制.

在下面的示例中,将忽略最后一个分隔符,并且丢失未找到分隔符的信息.如果sscanf能够匹配整个字符串,我该如何控制?

#include <stdio.h>
#include <string.h>

unsigned printIdentity(const char * formula){
    unsigned e = 0, found = 0;
    double a, b;
    printf("-------------\n");
    printf("INVESTIGATING: %s\n", formula);
    if( ( 2 == sscanf_s( formula, " \" X * %lf %lf \" ", &a, &b, sizeof( double ), sizeof( double ) ) ) ){
        printf("MATCH: X * %lf + %lf\n", a, b);
        ++found;
    }
    if( ( 1 == sscanf_s( formula, " \" X * %lf \" ", &a, sizeof( double …
Run Code Online (Sandbox Code Playgroud)

c formatting scanf

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

为什么static_cast可以编译将指针转换为智能指针

我只是偶然发现了一个来自智能指针的演员,想要检查是否static_cast可以在编译时声明以下是无意义的:

int main()
{
    char foobar[4] = "Foo";
    std::unique_ptr<char[]> myptr = static_cast<decltype(myptr)>(foobar);
    myptr.reset();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里发生的是myptr尝试释放foobar.

我不是在问什么是智能指针或如何分配或以其他方式修复上述内容.

我认为这个问题应该在编译时捕获,因为这些类型应该是完全不兼容的.

为什么在编译时没有检测到这个?

c++ static-cast unique-ptr

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

WPF 单选按钮组与自定义用户控件的冲突

我将同一个 UserControl 实例化两次。两者都有 Radiobuttons 并共享 GroupName。当我选择一个所有其他人时,即使它们是不同 UserControl 实例的一部分,也要取消选择。

如何避免这种 GroupName 冲突?

这是一个最小的例子来说明这一点:

主文件

<Window x:Class="RadioDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <UserControl x:Name="First"/>
        <UserControl x:Name="Second"/>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

主要代码隐藏

public MainWindow()
{
    InitializeComponent();
    Loaded += MainWindow_Loaded;
}

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    First.Content = new MyRadio();
    Second.Content = new MyRadio();
}
Run Code Online (Sandbox Code Playgroud)

MyRadio xaml

<UserControl x:Class="RadioDemo.MyRadio"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <StackPanel>
        <RadioButton GroupName="G" x:Name="RadioOne" Content="RadioOne"/>
        <RadioButton GroupName="G" x:Name="RadioTwo" Content="RadioTwo"/>
    </StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml radio-button

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