gpt4 book ai didi

c++ - 在 C++ Builder 和 VC++ 中使用 std::string 的区别

转载 作者:太空宇宙 更新时间:2023-11-04 15:05:31 26 4
gpt4 key购买 nike

因为我可以接触到新的 RAD Studio Xe4,所以我想我会试一试。不幸的是,我对 C++ 没有太多经验,因此我想知道为什么在 VC++ 中运行良好的代码在 C++ Builder 中根本无法运行。大多数问题是转换不同的 var 类型。例如:

std::string Test = " ";
GetFileAttributes(Test.c_str());

在 VC++ 中工作,但在 C++ Builder 中它不会编译,告诉我“E2034 无法将‘const char *’转换为‘wchar_t *’。我错过了什么吗?在所有编译器上不一样的原因是什么?谢谢

最佳答案

欢迎来到 Windows Unicode/ASCII hell 。

函数

GetFileAttributes

实际上是定义为 GetFileAttributesAGetFileAttributesW 的宏,具体取决于您是否有 _UNICODE(或者它是 UNICODE,或两者?)在包含 Windows header 时定义。 *A 变体采用 char* 和相关参数,*W 函数采用 wchar_t* 和相关参数。

我建议在新代码中直接调用宽 *W 变体。这意味着切换到 std::wstring 仅适用于 Windows 代码和跨平台应用程序的一些深思熟虑的设计选择。

关于c++ - 在 C++ Builder 和 VC++ 中使用 std::string 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16172444/

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