- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在编写代码时遇到了问题。我使用一个函数,该函数将类型为 LPCSTR 的参数对象作为参数对象。对象声明如下所示:LPCTSTR lp文件名;首先,我使用定义的变量,它被进一步分配给 lpFileName,如下所示:
#define COM_NR L"COM3"
lpFileName = COM_NR
使用这种方式,我可以轻松地将 lpFileName 参数传递给函数。无论如何,我不得不改变定义端口号的方式。目前我从 *.txt 文件中读取文本并将其保存为字符串变量,例如“COM3”或“COM10”。主要问题是正确地将字符串转换为 LPCSTR。我找到了很好的解决方案,但最后它似乎无法正常工作。我的代码如下所示:
string temp;
\\code that fill temp\\
wstring ws;
ws.assign(temp.begin(),temp.end());
我认为转换是正确的,也许它是正确的,但我不明白,因为当我打印一些东西时,我想知道为什么它不能像我想要的那样工作:cout temp_cstr(): COM3cout LCOM3: 0x40e586cout ws.c_str(): 0x8b49b2c
为什么 LCOM3 和 ws.c_str() 不包含相同的内容?当我将 lpFileName = ws.c_str() 传递给我的函数时,它无法正常工作。另一方面,传递 lpFileName = L"COM3"会成功。我用cpp写代码,IDE是QtCreator
最佳答案
最终,我使用转换函数 s2ws() 并执行了一些操作来解决这个问题。我把我的灵魂放在这里是为了那些在转换字符串时会遇到类似麻烦的人。在我的第一篇文章中,我写道我需要将字符串转换为 LPCTSTR,最后我发现函数中的参数不是 LPCTSTR,而是 LPCWSTR,即 const wchar_t*。所以,解决方案:
string = "COM3";
wstring stemp;
LPCWSTR result_port;
stemp = s2ws(port_nr);
result_port = stemp.c_str(); // now passing result_port to my function i am getting success
s2ws声明:
wstring s2ws(const std::string& s)
{
int len;
int slength = (int)s.length() + 1;
len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0);
wchar_t* buf = new wchar_t[len];
MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len);
std::wstring r(buf);
delete[] buf;
return r;
}
关于c++ - 将字符串转换为 LPCTSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689859/
我正在尝试在 MFC 应用程序中使用 listbox.Addstring();,它将采用 LPCTSTR。我正在传递一个长度为 33 个字符的 char 数组变量。 ListBox.AddString
This question is unlikely to help any future visitors; it is only relevant to a small geographic are
我一直致力于使用 FindFirstFile 和 FindNextFile 反向搜索目录的系统,但我遇到了一个我不明白的问题。 下面是一段代码。 int WINAPI WinMain(HINSTANC
我可以知道如何执行以下转换吗? // el.strCap is char[50] // InsertItem is expecting TCHAR pointer (LPCTSTR) // How I
如何将数字附加到 LPCTSTR?我正在使用的库采用 LPCTSTR 作为 com 端口地址。我知道如何使用 char* 执行此操作,但不知道如何使用 LPCTSTR。这就是我想要做的(假设 spri
我正在为一个 WindowsCE CAB 文件实现一个自定义操作,我需要连接一个 LPCTSTR 以获得一个正确的 exe 路径。 我的自定义操作接收一个 LPCTSTR 作为参数。 所以(伪代码):
我有这样的函数,它接受可变数量的参数和构造 字符串并将其传递给另一个函数以打印日志。 logverbose( const char * format, ... ) { char buffer[1024
LPCTSTR applicationName = NUL // NULL => module name from command line string argument1 = "something
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: C++ std::string conversion problem on Windows How to c
我在编写代码时遇到了问题。我使用一个函数,该函数将类型为 LPCSTR 的参数对象作为参数对象。对象声明如下所示:LPCTSTR lp文件名;首先,我使用定义的变量,它被进一步分配给 lpFileNa
如何获取 LPCTSTR 的子字符串? 最佳答案 LPCSTR只是 char * 的花哨名称,它没有方法。 如果您使用 std::string 您可以使用 find 和 substr 方法来提取字符串
我有一个需要 LPCTSTR 的类。 当我打电话时: 新 CFileImageLoader(_T("Splash02.png"))或者 新的 CFileImageLoader("Splash02.pn
// Convert to a wchar_t* size_t origsize = strlen(toChar) + 1; const size_t newsize = 100; size_t co
我正在尝试再写第二行,但我不知道该使用哪个代码。 我尝试过使用\r\n、\n、\r 等,但他们都没有工作。 感谢所有帮助过的人! :) 这是我的代码的一部分。(我也包括了标题。) HINSTANCE
我正在使用 visual studio 2010 MFC 构建 C++ 程序。我的程序调用了一个不属于项目的 DLL,它接受一个 char*。我有一个函数可以获取 LPCTSTR 格式的字符串。我现在
我正在尝试将一些文本放入静态文本小部件中,如下所示: m_StartupTime.SetWindowText(someStringVariable); 并得到一个错误: 'CWnd::SetWindo
我创建了一个 md5 哈希器,它接受一个文件并返回哈希值。 我使用“hFind = FindFirstFile(dir, &data)”来列出目录中的文件。 为了将这些文件的路径传递给我的哈希函数,我
这个问题在这里已经有了答案: What does LPCWSTR stand for and how should it be handled? (3 个答案) 关闭 9 年前。 我在理解和让它正常
也许任何人都可以向我解释一下: bool Func1(LPCTSTR sData) { if (sData) { ... } } 我这样调用函数: CString str = _T("");
我想使用 LoadLibrary 开发一个插件系统。 我的问题是:我希望我的函数采用 const char* 而 LoadLibrary 采用 LPCTSTR。 我有一个聪明的想法来做(LPCSTR)
我是一名优秀的程序员,十分优秀!