首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改这个LPSTR?

如何修改这个LPSTR?
EN

Stack Overflow用户
提问于 2011-11-14 23:44:49
回答 3查看 1.9K关注 0票数 0

让我们假设一下我有一个变量

代码语言:javascript
复制
LPTSTR cmdArgs = "D:\\path\my.exe -user blah PLATFORM=0 DEVICE=0 -k poclbm VECTORS BFI_INT WORKSIZE=128 AGGRESSION=7";

注意上面写DEVICE=0的地方,在我的例子中,可能是DEVICE=1或DEVICE=2等等。

这意味着,该字符串必须是动态的。我将把应该在DEVICE=之后的数字传递给一个函数,但是,我不知道如何将它添加到cmdArgs变量中。

我正在考虑使用sprintf和do DEVICE=%d,但我不知道是否可以将char变量(它将包含格式化的字符串)转换为LPSTR

EN

回答 3

Stack Overflow用户

发布于 2011-11-15 00:01:01

LPSTRchar *的类型--char *。可以使用sprintf将设备编号插入到字符串中。

代码语言:javascript
复制
char cmdArgs[1000];
int deviceNum = 1;
sprintf( cmdArgs, "D:\\path\\my.exe -user blah PLATFORM=0 DEVICE=%d -k poclbm VECTORS BFI_INT WORKSIZE=128 AGGRESSION=7", deviceNum );

编辑:

由于代码片段显示了一个LPTSTR,所以您可能希望使用TCHAR例程而不是sprintfLPTSTR在定义_UNICODE预处理器符号时为whcar_t *,如果未定义该符号或定义了_MBCS,则为char *

代码语言:javascript
复制
TCHAR cmdArgs[1000];
int deviceNum = 1;
_stprintf( cmdArgs, _T(""D:\\path\\my.exe -user blah PLATFORM=0 DEVICE=%d -k poclbm VECTORS BFI_INT WORKSIZE=128 AGGRESSION=7"), deviceNum );
票数 2
EN

Stack Overflow用户

发布于 2011-11-15 00:06:19

您的摘要显示LPSTR,但您的代码块显示LPTSTR。这些(可能)是不同的东西,取决于您是否正在为Unicode构建。

在unicode构建中,LPTSTR是一个wchar_t*。在非unicode中,LPTSTR是char*。LPSTR在这两种情况下都是char*。

H有这些类型(这些不是字面类型的类型,我在这里对它们作了一些解释):

代码语言:javascript
复制
typedef char CHAR;
typedef CHAR *LPSTR;

typedef wchar_t WCHAR;
typedef WCHAR *LPWSTR;

#ifdef UNICODE
typedef LPWSTR LPTSTR;
#else
typedef LPSTR LPTSTR;
#endif

如果您正在构建非Unicode,则使用%d的sprintf将执行您想要的操作,正如这里的其他人所指定的那样。

票数 1
EN

Stack Overflow用户

发布于 2011-11-14 23:48:38

为什么不使用%s,因为您有一个char *

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8129794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档