【问题标题】:how to combine two LPCWSTRs?如何组合两个 LPCWSTR?
【发布时间】:2010-12-20 20:43:35
【问题描述】:

我有两个变量是LPCWSTRs。我想创建一个具有第一个和第二个变量值的新变量。
我试过这个,但没有用。

LPCWSTR d = L"sd";
LPCWSTR f = L"f";
LPCWSTR df = d + f;

我在尝试时收到此错误。

1   IntelliSense: expression must have integral or enum type

有没有可以合并两个LPCWSTRs的函数?

【问题讨论】:

  • 据说,你希望得到的字符串是L"sdf",有点像strcat会给你char字符串?

标签: c++ string winapi visual-c++


【解决方案1】:

在 C++ 中,使用std::string 处理字符串通常是个好主意。在您的情况下,它可能看起来像:

LPCWSTR d = L"sd";
LPCWSTR f = L"f";
std::wstring df = std::wstring(d) + f;
LPCWSTR dfc = df.c_str(); // if you are really need this

【讨论】:

    【解决方案2】:

    它不起作用,因为 C++ 编译器无法生成代码来连接数组。示例中的两个字符串是 wchar_t 类型的数组。要加入数组,您必须使用更高级别的函数。有几种方法:

    LPWSTR df[20]; // cannot be LPCWSTR, because the C is for const.
    wcsprintf(df, L"%s%s", d, f);
    

    LPWSTR df[20];
    wcscpy(df, d);
    wcscat(df, f);
    

    或使用之前回答的 STL。

    【讨论】:

    • 确认! wcscpywcscat 是纯粹的邪恶!使用边界检查变体!
    • 嗯...您将 df 声明为一个包含 20 个指向宽字符的指针的数组。我认为你真的想要 wchar_t df[20];并且 Jonathan Grynspan 的评论是 100% 正确的 - 远离 wcscpy 和 wcscat,改用 wcscpy_s 和 wcscat_s。
    猜你喜欢
    • 2010-11-20
    • 2017-05-04
    • 2015-12-17
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2017-10-19
    相关资源
    最近更新 更多