LPTSTR到int(c ++)

时间:2009-02-02 19:55:43

标签: c++ casting lptstr

我在创建进程时(在VC ++中)传递一些数字参数

我坚持将LPTSTR转换为int。

提前致谢。

5 个答案:

答案 0 :(得分:12)

LPTSTR只是一个指向char或wide-char字符串的长指针。

使用_ttoi_tstoi获取与字符宽度无关的转换方式。

另见

答案 1 :(得分:2)

GACK!你究竟想做什么?您的问题是在父进程方(调用CreateProcess())还是在子进程方面?

有几种方法可以将父进程中的参数传递给CreateProcess()函数创建的子进程。如果您可以将这些参数编码为合理大小的字符串,那么通过命令行参数(CreateProcess的lpCommandLine参数)传递它们可能是最直接的&便携式,环境变量第二。

如果你有一个数据结构,你不能用一个合理大小的字符串编码(因为它是一个大量的内存,或者它不容易序列化),那么你需要采用一些进程间通信的方法。文件或共享内存块是两种方法。在任何一种情况下,您都需要为孩子找到一个商定的位置来找到它(在文件的情况下是文件路径,或共享内存块的名称),然后将此字符串作为命令行传递参数或环境变量。

如果您尝试解析子进程中的lpCommandLine参数,那么这就是其他人的建议。

答案 2 :(得分:1)

尝试使用atoi()函数(如果使用宽字符,则使用相应的版本)将字符串转换为整数。

答案 3 :(得分:1)

我的建议是使用_tcstol而不是_ttoi之类的东西,这样你就可以处理错误条件,例如字符串中的非数字。例如:

int result = atoi("0");
result = atoi("foo");

在这两种情况下,结果都是0,但仅在第二种情况下,转换时会出错。

答案 4 :(得分:-1)

LPTSTR是一个指向字符串的指针,因此如果你想要的是一个表示字符串值的int,你就不应该把它强制转换为int。

如果您知道该字符串包含数字,例如“1234”您应该能够使用_wtoi函数将其转换为int

e.g。

int num = _wtoi(foo);

其中foo是LPTSTR。

编辑:以上只有在LPTSTR是UNICODE字符串时才能正常工作。即_UNICODE已定义。如果不是,你应该使用atoi。

请参阅http://msdn.microsoft.com/en-us/library/yd5xkb5c(VS.80).aspx