gpt4 book ai didi

C++ MessageBox 字符数组

转载 作者:太空宇宙 更新时间:2023-11-04 14:32:24 25 4
gpt4 key购买 nike

我在使用带变量的 MessageBox 函数时遇到困难

我有

int main(int argc, char* argv[])
{
char* filename = argv[0];
DWORD length = strlen(filename);

MessageBox(0, TEXT("filename text"), TEXT("length text"), 0); // Works
}

但我想将变量文件名和长度输出为:

MessageBox(0, filename, length, 0); -- compiler error

MessageBox 函数的语法为:

int WINAPI MessageBox(
_In_opt_ HWND hWnd,
_In_opt_ LPCTSTR lpText,
_In_opt_ LPCTSTR lpCaption,
_In_ UINT uType
);

我试过用

MessageBox(0, (LPCWSTR)filename, (LPCWSTR)length, 0);

但输出是某种象形文字。

最佳答案

变量length不是字符串,只能使用字符串。尝试将其转换为 char* 并没有帮助,因为 length 的值将被视为指向字符串的指针,这将导致未定义的行为。

对于 C++,您可以使用例如std::to_string将非字符串值转换为字符串,例如

MessageBox(0, filename, std::to_string(length).c_str(), 0);

请注意,您必须使用 c_str获取 char* 的函数。

如果你没有 std::to_string 那么你可以使用例如std::istringstream相反:

std::istringstream is;
is << length;
MessageBox(0, filename, is.str().c_str(), 0);

如果您想要更老式的 C 解决方案,那么有 snprintf (或 Visual Studio 中的 _snprintf):

char length_string[20];
_snprintf(length_string, sizeof(length_string), "%ld", length);
MessageBox(0, filename, length_string, 0);

关于C++ MessageBox 字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com