小编Omn*_*ous的帖子

如何使用C++在Windows中获取硬件信息?

如何在c ++中获取硬件信息(例如cpuId,biosId,diskId,baseId和videoId)?

任何人都可以给我一个示例视觉工作室项目吗?

c++ windows windows-xp hardware-id visual-studio

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

为什么Java使用这个长二进制数来使用Long.parseLong(String s,int radix)会冒犯?

我有以下代码:

为什么Java认为这不是有效的long.

@Test
public void testOffendingBinaryString() {
  String offendingString = "1000000000000000000010101000000000000000000000000000000000000000";
  assertEquals(64, offendingString.length());
  Long.parseLong(offendingString, 2);
}
Run Code Online (Sandbox Code Playgroud)

java

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

如何使用Python 3.2电子邮件模块发送带有quoted-printable的utf-8编码的unicode消息?

我想在Python 3.2程序中发送具有任意unicode主体的电子邮件.但实际上,这些消息主要由7位ASCII文本组成.所以我想使用quoted-printable在utf-8中编码的消息.到目前为止,我发现这有效,但似乎错了:

c = email.charset.Charset('utf-8')
c.body_encoding = email.charset.QP
m = email.message.Message()
m.set_payload("My message with an '\u05d0' in it.".encode('utf-8').decode('iso8859-1'), c)
Run Code Online (Sandbox Code Playgroud)

这会生成包含完全正确内容的电子邮件:

To: someone@example.com
From: someone_else@example.com
Subject: This is a subjective subject.
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

My message with an '=D7=90' in it.
Run Code Online (Sandbox Code Playgroud)

特别b'\xd7\x90'.decode('utf-8')是原始Unicode字符的结果.所以quoted-printable编码正确地渲染了utf-8.我很清楚这是一个令人难以置信的丑陋黑客.但它的确有效.

这是Python 3.文本字符串应始终是unicode.我不应该将其解码为utf-8.然后从将其bytesstr.decode('iso8859-1')是一个可怕的黑客,我不应该做,要么.

email关于编码,模块刚刚破解?我没有得到什么吗?

我试图只是简单地设置它,没有字符集.这留给我一个unicode电子邮件消息,这根本不对.我也尝试过离开encodedecode步骤.如果我将它们都关闭,它会\u05d0在尝试确定是否需要在quoted-printable编码中引用该字符时抱怨它超出范围.如果我离开这encode一步,它会痛苦地抱怨我是如何传入的bytes,它想要一个str.

python email mime character-encoding python-3.x

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

混合线程,叉子和互斥体,我应该注意什么?

如果我fork是一个线程持有互斥锁的进程,如果我立刻exec在孩子身上,我相对安全吗?在我之前,孩子们可以做些什么事情exec

如果执行的线程fork然后子进程在调用之前继续释放互斥锁exec会导致问题吗?如果我尝试获取父进程之前拥有的子进程fork(并且可能或可能仍然拥有)的子进程,会发生什么?

不同平台上的答案有何不同?我主要关注的是Unix变体,特别是Linux.但我对NT感到好奇.当然,虽然NT(据我所知)没有fork.

multithreading mutex fork

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

这是认可的方法来访问与Python脚本相邻/打包的数据吗?

我有一个Python脚本,该脚本需要一些存储在文件中的数据,这些数据将始终与该脚本位于同一位置。我有一个setup.py脚本脚本,我想确保它可以在各种环境中安装为pip,并且在必要时可以将其转换为独立的可执行文件。

目前,该脚本可在Python 2.7和Python 3.3或更高版本上运行(尽管我没有针对3.3的测试环境,所以我不确定)。

我想出了这种方法来获取数据。该脚本不是包含__init__.py任何内容的模块目录的一部分,它只是一个独立文件,如果直接运行就可以使用python,而且在setup.py文件中定义了入口点。全部都是一个文件。这是正确的方法吗?

def fetch_wordlist():
    wordlist = 'wordlist.txt'
    try:
        import importlib.resources as res
        return res.read_binary(__file__, wordlist)
    except ImportError:
        pass
    try:
        import pkg_resources as resources
        req = resources.Requirement.parse('makepw')
        wordlist = resources.resource_filename(req, wordlist)
    except ImportError:
        import os.path
        wordlist = os.path.join(os.path.dirname(__file__), wordlist)
    with open(wordlist, 'rb') as f:
        return f.read()
Run Code Online (Sandbox Code Playgroud)

这似乎很复杂。而且,它似乎以我不满意的方式依赖于软件包管理系统。除非已通过pip安装,否则该脚本将不再起作用,这似乎也不可取。

python resources packaging

7
推荐指数
2
解决办法
361
查看次数

有没有办法让 g++ 用 Unicode 标识符编译这个程序?

int test(int )
{
   auto  = 5;
    += ;
   return ;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让 g++ 编译这个程序?我试过了g++ -fextended-identifiers -finput-charset=utf-8 -c utf8-test.cpp,我得到了这样的错误:

utf8-test.cpp:1:9: error: stray ‘\360’ in program
    1 | int test(int )
      |         ^
Run Code Online (Sandbox Code Playgroud)

它适用于叮当声。

请注意,我通常不赞成在标识符中使用表情符号的做法。这只是用于测试目的的极限情况。虽然,我有一个类,命名为 ?pField 会非常好(使用 ZPField 的一个很好的类型别名,以节省每个人弄清楚如何输入它的痛苦)。

编辑: TLDR 答案似乎是 gcc 可能会在 gcc 10 中支持这一点,但现在不支持,这是一个已知问题。也不清楚标准是否需要这种支持,并且您可能需要使用\U转义的十六进制或 UCN 序列来指定标识符中的 Unicode 字符。

c++ unicode emoji

7
推荐指数
0
解决办法
113
查看次数

为什么我会收到这些"已经定义"的链接器错误?

我是C++的初学者,但我有一些使用Java的经验.我收到一些我不明白的错误.我附上了错误控制台的图片和它下面的代码.

 Error  1   error LNK2005: "public: __thiscall VectorDouble::VectorDouble(void)" (??0VectorDouble@@QAE@XZ) already defined in Main.obj  C:\Users\carrea\Code\Visual Studio\COMP201\Lab8_VectorDoubleClass\VectorDouble.obj  Lab8_VectorDoubleClass

 Error  2   error LNK2005: "public: __thiscall VectorDouble::VectorDouble(int)" (??0VectorDouble@@QAE@H@Z) already defined in Main.obj  C:\Users\carrea\Code\Visual Studio\COMP201\Lab8_VectorDoubleClass\VectorDouble.obj  Lab8_VectorDoubleClass
....    
Run Code Online (Sandbox Code Playgroud)

还有10个像这样的错误

 Error  13  error LNK1169: one or more multiply defined symbols found   C:\Users\carrea\Code\Visual Studio\COMP201\Lab8_VectorDoubleClass\Debug\Lab8_VectorDoubleClass.exe  1   1   Lab8_VectorDoubleClass
Run Code Online (Sandbox Code Playgroud)

Main.cpp的


#include "VectorDouble.cpp"
using namespace std;
void printVD(const VectorDouble& v);
int main()
{
    VectorDouble p;
    p.push_back(1);
    p.push_back(4);
    p.push_back(3);
    VectorDouble v(p);
    printVD(v);
    printVD(p);
}
void printVD(const VectorDouble& v)
{
    int n = …
Run Code Online (Sandbox Code Playgroud)

c++ linker

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

为什么这个程序调用operator()而不是构造函数?

这是一个在没有警告的情况下编译的程序,例如GNU C++:

$ g++ -o t -Wall -pedantic -Wshadow t.cpp

$ ./t.exe
Calling barney::barney()
Calling foo::operator()()
Calling barney::barney()
Run Code Online (Sandbox Code Playgroud)

但它完全无法在MSVC++上编译:

$ cl /EHsc t.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

t.cpp
t.cpp(17) : error C2380: type(s) preceding 'fred' (constructor with return type, or illegal redefinition of current class-name?)
t.cpp(17) : error C2208: 'fred' : no members defined using this type
Run Code Online (Sandbox Code Playgroud)

更重要的是,当它编译时,输出不是我所期望的.有人可以了解这段代码所需的标准行为吗?

这里是:

#include <iostream>

using ::std::cerr;

struct fred;

struct …
Run Code Online (Sandbox Code Playgroud)

c++

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

在 VS Code 中输入 Unicode 符号

我在输入 ? Visual Studio Code 编辑器中的符号 (U+03A9)。

在我的 Mac 上,我通常可以用option+输入它,z但它似乎在代码中不起作用。

许多其他组合似乎工作得很好(例如, ? option+x正确输入)。

我想知道 VS Code 是否正在拦截其他键盘快捷键的option+ z。我搜索了键盘快捷键列表,但没有找到任何相关内容。

unicode macos visual-studio-code

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

有没有办法在C++ 17中简化这个C++ 14递归模板?

poly_eval函数将计算在x的特定值处评估具有特定系数集的多项式的结果.例如,poly_eval(5, 1, -2, -1)计算x ^ 2 - 2x - 1,其中x = 5. constexpr如果给它常量,它将全部如此,它将在编译时计算答案.

它目前使用递归模板在编译时构建多项式求值表达式,并依赖于C++ 14 constexpr.我想知道是否有人能想出一个很好的方法来删除递归模板,也许是使用C++ 17.运行模板的代码使用__uint128_tclang和gcc中的类型.

#include <type_traits>
#include <tuple>

template <typename X_t, typename Coeff_1_T>
constexpr auto poly_eval_accum(const X_t &x, const Coeff_1_T &c1)
{
    return ::std::pair<X_t, Coeff_1_T>(x, c1);
}

template <typename X_t, typename Coeff_1_T, typename... Coeff_TList>
constexpr auto poly_eval_accum(const X_t &x, const Coeff_1_T &c1, const Coeff_TList &... coeffs)
{
    const auto &tmp_result = poly_eval_accum(x, coeffs...);
    auto saved = tmp_result.second + tmp_result.first …
Run Code Online (Sandbox Code Playgroud)

c++ c++14 c++17

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