我有一個Visual Studio 2008 C++應用程序,我想將所有程序參數複製到由空格分隔的字符串「」中。即,如果我的程序被稱爲foo.exe \Program Files
,那麼我下面folder
字符串將包含\Program Files
將程序參數複製到空格分隔的std :: string
下面是什麼,我現在在做一個例子。我想知道是否有這樣做的更簡單或更簡單的方法。有沒有簡單的方法來消除std::wstringstream
變量?
int _tmain(int argc, _TCHAR* argv[])
{
std::wstringstream f;
std::copy(argv + 1,
argv + argc,
std::ostream_iterator< std::wstring, wchar_t >(f, L" "));
std::wstring folder = f.str();
// ensure the folder begins with a backslash
if(folder[ 0 ] != L'\\')
folder.insert(0, 1, L'\\');
// remove the trailing " " character from the end added by the std::copy() above
if(*folder.rbegin() == L' ')
folder.erase(folder.size() - 1);
// ...
}
感謝, PaulH
用空格處理路徑的通常方法是將它們放在命令行中的引號中。您的程序會在'argc'中看到帶空格的路徑,因此您不需要執行任何特殊處理。您可能會嘗試將此作爲服務提供給用戶,但如果您想稍後添加命令行選項,該怎麼辦? – Thomas 2010-05-12 16:04:46
我會注意到,對於我接受的解決方案,托馬斯的評論是必不可少的。你必須雙引號的空格/空白的參數(路徑)。然而,雙引號不會出現在你的程序中。 – 2010-05-12 16:19:04