小编tmi*_*hty的帖子

C++:wstring 是跨平台的吗?

我目前正在 Windows 上进行开发,但我想让我的应用程序稍后跨平台。它没有/不需要 GUI。

我一直在使用 wstrings,希望这是最好的解决方案。我在项目设置中使用“多字节字符集”。

所有其他平台也支持 wstring 吗?

c++ cross-platform wstring

5
推荐指数
2
解决办法
2311
查看次数

C++ 将 memcpy 转换为 std::copy

我想用“std::copy”替换“memcpy”,但我只是找不到传递参数的正确方法。

我的旧 memcpy 代码是

memcpy(&uFeatures.Features[0], &((char*)(m_pData))[iBytePos],iByteCount);
Run Code Online (Sandbox Code Playgroud)

我用 std::copy 尝试了各种方法,但它们都不起作用。

有人可以帮忙吗?

c++ copy

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

C++从文件的几个部分读取太慢

我需要从一个大文件的几个位置读取字节数组.我已经对文件进行了优化,以便尽可能少地阅读部分,并且这些部分尽可能紧密地结合在一起.

我有20个这样的电话:

m_content.resize(iByteCount);

fseek(iReadFile,iStartPos ,SEEK_SET);
size_t readElements = fread(&m_content[0], sizeof(unsigned char), iByteCount, iReadFile); 
Run Code Online (Sandbox Code Playgroud)

iByteCount平均约为5000.

在使用fread之前,我使用了内存映射文件,但结果大致相同.

第一次呼叫时,我的呼叫仍然太慢(大约200毫秒).当我用相同的字节部分重复相同的调用来读取时,它非常快(大约1毫秒),但这对我没有帮助.

文件很大(大约200 MB).在此调用之后,我必须从文件的不同部分读取双值,但我无法避免这种情况.

我不想将其拆分为2个文件.我已经看到了其他人使用的"巨大文件方法",他们以某种方式克服了这个问题.

如果我使用内存映射,第一次读取调用总是很慢.如果我再重复阅读本节,它会快速闪电.当我从另一个部分读取时,它第一次很慢,但第二次快速闪电.

我不知道为什么会这样.

有没有人对我有任何想法?谢谢.

c++ optimization

5
推荐指数
2
解决办法
1151
查看次数

VB.NET"For each"与".GetUpperBound(0)"

我想知道什么是首选......

    Dim sLines() As String = s.Split(NewLine)
Run Code Online (Sandbox Code Playgroud)

每个:

    For Each sLines_item As String In sLines
Run Code Online (Sandbox Code Playgroud)

.GetUpperBound:

    For i As Integer = 0 To sLines.GetUpperBound(0)
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会为这种情况引入"For Each".到目前为止我只使用.GetUpperBound,而且我没有看到任何PRO为"For Each".

谢谢

ps:当我使用."GetUpperBound(0)"时,我知道我正在迭代向量.相比之下,"For Each"听起来像"我不关心矢量给我的顺序".但我认为这只是个人兴趣.

vb.net string foreach vector

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

硬符号链接:指定“开始于:”和参数

我在用着

mklink /h "C:\Shortcut.exe" "C:\Real.exe"
Run Code Online (Sandbox Code Playgroud)

创建硬符号文件链接。

但是,我不知道如何为目标文件或参数指定“开始于:”属性。

有没有办法做到这一点?

mklink windows-10

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

Chrome忘记了某个Google密码

我在Chrome浏览器中设置了多个Google帐户。Chrome会记住所有密码以及他们的密码:如果要访问我的帐户,请单击我的名字,然后它会自动插入我的名字。

但是,有一个帐户Chrome不会存储其密码。当我输入第一个字母时,Chrome会提供该帐户,但是当我单击它时,它不会自动填写密码。

我每次必须手动输入密码。

我在哪里可以改变呢?我只是没有在Chrome中看到任何设置。

谢谢!

编辑:更多信息:根据建议,为了从头开始,我已经在新的虚拟机中安装了Chrome。我想问问Chrome是否应该保存(并由此同步)凭据。当我登录Gmail时,Chrome不会询问我是否应保存凭据。因此,我猜该邮件地址在“忽略列表”中(否则Chrome会问我是否应保存)。但是它没有显示在“忽略”列表中,所以我不能从那里删除它。我猜那是一个真正的Google错误。

另外,更改密码不会触发“更新密码?”。Chrome中的对话框。

google-chrome

5
推荐指数
0
解决办法
254
查看次数

为 GET_WHEEL_DELTA_WPARAM 创建 wParam

如果我使用计算机鼠标滚动窗口,我会得到以下 Spy++ 结果:

fwKeys: 0, zDelta: -120
Run Code Online (Sandbox Code Playgroud)

我需要通过代码模拟鼠标滚轮事件,所以我使用 PostMessage,如下所示:

Public Declare Function CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long) As Long

PostMessage lHwnd, WM_MOUSEWHEEL, MakeWParam(0, -120), 0

Public Function MakeWParam(ByVal uHigh As Long, ByVal uLow As Long) As Long

    Dim foo(0 To 1) As Integer
    Dim lRet As Long

    foo(0) = uHigh
    foo(1) = uLow

    Call CopyMemory(lRet, VarPtr(foo(0)), Len(lRet))

    MakeWParam = lRet

End Function
Run Code Online (Sandbox Code Playgroud)

然而,这导致 Spy++ 告诉我以下内容:

fwKeys: 3C40, zDelta: 8996
Run Code Online (Sandbox Code Playgroud)

我不明白我哪里做错了。 …

windows vb6 api

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

安装了 VS2022 后如何以 Framework 4.8 为目标

由于我安装了VS2022,因此无法创建针对框架4.8的新项目。

每当我在 VS2019 中单击“新项目”时,它似乎都会调用 VS2022,这让我别无选择,只能选择 NetCore 或 Framework 5。两者都不适合我。

我启动VS2019:

在此输入图像描述

现在我点击“创建新项目”:

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

所以,似乎没有办法做我想做的事。

在此输入图像描述

“安装其他框架......”没有帮助。我已经安装了它们,所以他们的安装程序只允许我恢复/修改/修复它们。

在此输入图像描述

我还能尝试什么?

编辑:是的,在安装程序中,Framework 4.8 已激活:

在此输入图像描述

.net frameworks visual-studio-2019 visual-studio-2022

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

C++将unsigned char附加到wstring

出于调试原因,我想将一个unsigned char附加到wstring.

但是,我没有找到将unsigned char转换为wstring的函数,所以我无法追加它.

编辑:到目前为止发布的解决方案并没有真正做到我需要的.我想将0转换为"0".到目前为止,解决方案将0转换为0字符,但不转换为"0"字符串.

有人可以帮忙吗?

谢谢.

unsigned char SomeValue;
wstring sDebug;

sDebug.append(SomeValue);
Run Code Online (Sandbox Code Playgroud)

c++ append wstring

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

C++ VS2010将我的代码编译成几乎可读的代码

我试图使用反编译器"破解"我自己的应用程序.我可以清楚地看到函数名称和许多参数名称.

因此,我认为我以某种方式使用我的代码编译调试信息,尽管它已设置为Release.

此外,编译器告诉我类似的事情

mylib.lib(vq.obj):警告LNK4099:在"mylib.lib(vq.obj)"或"M:\ myapp\Release\vc100.pdb"中找不到PDB"vc100.pdb"; 将链接对象,就好像没有可用的调试信息一样.

这是VC尝试包含一些调试信息的提示吗?

此外,我的解决方案包含3个项目,以编译形式生成3个dll.

当我"破解"3个dll中的一个时,我可以看到其中2个dll的函数名称.我不知道为什么.

有人可以告诉我如何使dll更少调试,以及如何"使用"dll中的dll函数而不是1 dll中的所有函数.我希望我能解释清楚.

c++ windows visual-studio-2010

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