小编Won*_*ong的帖子

如何正确使用nullptr?

目前我正在阅读Byarne Stroustrup的"C++之旅".重要的是:关于"指针,数组和引用",他举了一个关于如下使用的例子nullptr:

int count_x(char* p, char x)
// count the number of occurrences of x in p[]
// p is assumed to point to a zero-terminated array of char (or to nothing)
{

    if (p == nullptr) return 0;
        int count = 0;

    for (; p != nullptr; ++p)
        if (*p == x)
            ++count;

    return count;
}
Run Code Online (Sandbox Code Playgroud)

在我的主要内容中:

int main(){

    char* str = "Good morning!";
    char c = 'o';
    std::cout << count_x(str, c) << std::endl;

    return 0;
} …
Run Code Online (Sandbox Code Playgroud)

c++ nullptr

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

为什么我们从 MultiByte 转换为 WideChar?

我习惯于处理 ASCII 字符串,但现在使用 UNICODE 我对某些术语感到非常困惑:

什么是多字节字符和一个有widechar什么区别?多字节是指在内存中包含多个字节的字符,widechar只是一种数据类型来表示它吗?

  • 为什么我们从MultiByteToWideCharand转换WideCharToMultiByte

如果我声明如下:

wchar_t* wcMsg = L"?????";
MessageBoxW(0, wcMsg, 0, 0);
Run Code Online (Sandbox Code Playgroud)

如果我定义,它会正确打印消息UNICODE但是为什么我没有从WideCharToMultiByte??

  • 我的项目中的字符集有什么区别:_MBCSUNICODE

  • MSDN 让我对“Windows API”感到困惑的最后一件事是 UTF-16。

任何人都可以用一些例子来解释。一个很好的澄清真的很感激。

c++ windows unicode

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

为什么我的应用程序无法正确显示unicode字符?

我决定将我的win32 c ++应用程序转换为Unicode版本,但是当我使用它时,我收到了阿拉伯语,中文和日语的不可读信件......

第一:

如果我不使用Unicode,我在编辑框中得到了阿拉伯语ok窗口标题:

HWND hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", "? ? ? ? ? ? ? ? ?", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE, 10, 10, 300, 200, hWnd, (HMENU)100, GetModuleHandle(NULL), NULL);

SetWindowText(hWnd, "???? ?????");
Run Code Online (Sandbox Code Playgroud)

输出似乎没问题,工作正常!(没有unicode).

  • 使用Unicode:

我在包含标题之前添加了:

#define UNICODE
#include <windows.h
Run Code Online (Sandbox Code Playgroud)

现在在窗口过程中:

case WM_CREATE:{
    HWND hEdit = CreateWindowExW(WS_EX_CLIENTEDGE, L"Edit", L"? ? ? ? ? ? ? ? ?", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_MULTILINE, 10, 10, 300, 200, hWnd, (HMENU)100, GetModuleHandle(NULL), NULL);

    // Even I send …
Run Code Online (Sandbox Code Playgroud)

c++ unicode winapi

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

通过sizeof将会发生什么

我有这个问题我不明白为什么我得到不正确的结果:

    if(sizeof(int) > -1)
        cout << "true" << endl;
    else
        cout << "false" << endl;
Run Code Online (Sandbox Code Playgroud)

上面也总是打印错误!但下面是正确的:

    int n = sizeof(int);

    // correct
    if(n > -1)
        cout << "true" << endl;
    else
        cout << "false" << endl;
Run Code Online (Sandbox Code Playgroud)

谁能向我解释发生了什么?谢谢.

c++ sizeof

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

标签 统计

c++ ×4

unicode ×2

nullptr ×1

sizeof ×1

winapi ×1

windows ×1