【问题标题】:Can not convert LPTSTR to std::string in release mode无法在发布模式下将 LPTSTR 转换为 std::string
【发布时间】:2014-02-06 04:59:28
【问题描述】:

正如标题所说,我无法在发布模式下将 LPTSTR 转换为 std::string。换句话说,当我这样做时:

LPTSTR lpt;
std::string str = lpt;

这仅在我处于调试模式时有效。编译器说找不到匹配的构造函数。我是不是忘了包括一些东西?

【问题讨论】:

  • 也许发布模式已经定义了UNICODE。只需从一开始就使用PWSTR,或者更好的是std::wstring
  • 就是这样!谢谢:)
  • 确保为两个构建都定义了UNICODE。始终为 Windows 应用程序使用宽字符串。 std::wstring 是您编写的所有代码的不错选择,但 Windows API 不会使用它,因为它们是 C API。

标签: c++ visual-c++


【解决方案1】:

我试过这个功能

#include <string>
using namespace std;

string LPTSTRToString(LPTSTR Input)
{
    string Output;
    for (int i=0;i<((wstring)Input).length();i++)
        Output+=Input[i];
    return Output;
}

【讨论】:

  • -1 这是从 UTF-16 转换为 ANSI 的一种非常非常糟糕的方法。并不是说有很多好方法,但这已经很糟糕了。
  • 这也是制定答案的不好方法。
  • 嗯......这对我有用。你能告诉我从 LPTSTR 转换为 std::string 的更好方法是什么吗?目前我没有找到其他方法。
猜你喜欢
  • 2017-10-31
  • 1970-01-01
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多