相关疑难解决方法(0)

"&s [0]"是否指向std :: string中的连续字符?

我正在做一些维护工作,遇到类似以下的事情:

std::string s;
s.resize( strLength );  
// strLength is a size_t with the length of a C string in it. 

memcpy( &s[0], str, strLength );
Run Code Online (Sandbox Code Playgroud)

我知道使用&s [0]如果它是std :: vector会是安全的,但是这是std :: string的安全使用吗?

c++ stdstring memcpy c++03

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

将lptstr转换为char*

有人会碰巧知道如何将类型转换LPTSTRchar *C++吗?

c++ char lptstr

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

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

将BSTR转换为const char*

可能重复:
哪个是在C/C++中将BSTR参数转换为ANSI的更好代码?
如何将char*转换为BSTR?

大家好,我是C++的新手,任何人都知道如何将BSTR转换为const char*?

c++

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

在Crypto ++中获取Unicode字符串的SHA1

我独立学习C++,我有一个问题,我不能解决超过一周的问题.我希望你能帮助我.

我需要获取Unicode字符串的SHA1摘要(如??????),但我不知道如何做到这一点.

我尝试这样做,但它返回错误的摘要!

因为wstring('?') 它返回 - A469A61DF29A7568A6CC63318EA8741FA1CF2A7
我需要 -8dbe718ab1e0c4d75f7ab50fc9a53ec4f0528373

关心并抱歉我的英语:).

CryptoPP 5.6.2 MVC++ 2013

#include <iostream>
#include "cryptopp562\cryptlib.h"
#include "cryptopp562\sha.h"
#include "cryptopp562\hex.h"

int main() {

    std::wstring string(L"?");
    int bs_size = (int)string.length() * sizeof(wchar_t);

    byte* bytes_string = new byte[bs_size];

    int n = 0; //real bytes count
    for (int i = 0; i < string.length(); i++) {
        wchar_t wcharacter = string[i];

        int high_byte = wcharacter & 0xFF00;

        high_byte = high_byte >> 8;

        int low_byte = wcharacter & 0xFF; …
Run Code Online (Sandbox Code Playgroud)

c++ unicode sha1 digest crypto++

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

C++ - 将 wchar_t 转换为网络字节并返回

主要原因是因为我通过套接字发送 Unicode 数据(字节,而不是字符),并且我想确保字节序匹配,因为 wchar_t 是 UTF16。

接收程序也是我的另一个程序,所以我会知道它是 UTF16 并且能够做出相应的反应。

这是我目前的算法,这种算法有效,但结果很奇怪。(这是在同一个应用程序中,因为我想在发送之前学习如何转换它)

case WM_CREATE: {   


    //Convert String to NetworkByte
    wchar_t Data[] = L"This is a string";
    char* DataA = (char*)Data;
    unsigned short uData = htons((unsigned int)DataA);

    //Convert String to HostByte
    unsigned short hData = ntohs(uData);
    DataA = (char*)&hData;
    wchar_t* DataW = (wchar_t*)DataA;
    MessageBeep(0);


    break;
}
Run Code Online (Sandbox Code Playgroud)

结果:

??????????????????This is a string
Run Code Online (Sandbox Code Playgroud)

c++ tcp winsock2

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

如何在Windows中转换宽字符和多字节字符串?

我有一个Windows应用程序,其中的字符串类型WCHAR*.我需要将其转换char*为传递给C API.我正在使用MultiByteToWideCharWideCharToMultiByte执行转换功能.

但由于某种原因,转换是不恰当的.我在输出中看到很多胡言乱语.以下代码是 stackoverflow答案中的修改版本.

WCHAR* convert_to_wstring(const char* str)
{
    int size_needed = MultiByteToWideChar(CP_UTF8, 0, str, (int)strlen(str), NULL, 0);
    WCHAR* wstrTo = (WCHAR*)malloc(size_needed);
    MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)strlen(str), wstrTo, size_needed);
    return wstrTo;
}

char* convert_from_wstring(const WCHAR* wstr)
{
    int size_needed = WideCharToMultiByte(CP_UTF8, 0, wstr, (int)wcslen(wstr), NULL, 0, NULL, NULL);
    char* strTo = (char*)malloc(size_needed);
    WideCharToMultiByte(CP_UTF8, 0, wstr, (int)wcslen(wstr), strTo, size_needed, NULL, NULL);
    return strTo;
}

int main()
{
    const WCHAR* wText = L"Wide string"; …
Run Code Online (Sandbox Code Playgroud)

c++ windows unicode

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

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