2010-01-22 88 views
1

我需要在Windows平臺中獲得一個%TEMP%環境變量值字符串。TEMP C++環境變量擴展(Windows)

如果我嘗試使用任何方法(C/C++)(getenv(),...)來獲取這個環境變量,它將在該字符串中返回「~」

例如:C:\ DOCUME〜1 \ pkp \ LOCALS〜1 \ Temp。

但我需要得到充分的字符串出於某些原因,如下:

C:\ Documents和Settings \ PKP \本地設置的\ Temp

如果有人知道任何方法來獲得此,請讓我知道。

+0

請注意,其中〜的名稱是「8.3名稱」。如果不是Windows系統上的所有文件都有兩個名字,一個「長」名和一個「8.3」名。這是一個Windows特定的概念。 〜真的是名稱的一部分,不能擴展。 – MSalters 2010-01-22 12:16:53

+0

謝謝你MStalers – anand 2010-02-02 06:25:35

+0

你有什麼理由相信*不是環境變量的價值?你運行'echo%TEMP%'時看到了什麼? – 2013-07-11 12:50:15

回答

3

致電GetLongPathName()的簡稱。

+0

你可以請建議一些純粹的C++,即不使用標準WINDOWS API。 – anand 2010-01-22 10:04:04

+0

多麼奇怪的請求! – 2010-01-22 10:08:19

+0

但你爲什麼覺得它離奇。是否有與wordexp()相同的STL函數?http://www.opengroup.org/onlinepubs/009695399/functions/wordexp.html – anand 2010-01-22 10:12:10

1

DOCUME〜1不是一個環境變量。這是來自DOS的傳統命名約定,仍然受到Windows的支持以實現向後兼容。因此,在環境變量意義上沒有什麼可以「擴大」。

1

你可以使用GetTempPath它要求你包含「windows.h」,但是我想你應該怎麼做,因爲你正在編寫一個Windows應用程序。

+0

能否請您在純C++中建議一些東西,即不使用標準WINDOWS api – anand 2010-01-22 10:07:49

+0

@anand - 我不確定這是可能的,除了您使用getenv做的方式 – Serge 2010-01-22 10:21:20