我正在尝试使用环境变量中的值创建一个打开文件的程序..
我的代码:
#include<iostream>
#include<cstdlib>
#include<sstream>
#include<cstring>
using namespace std;
void main(int argc, char *argv[])
{
std::stringstream stream;
int a;
cout<<"Press 1 to open Remainder: "<<endl;
cout<<"Press any other key to exit: "<<endl;
cin>>a;
if(a==1)
{
system("\"C:\\Documents and Settings\\%USERNAME%\\My Documents\\CorelDRAW X3.txt\"");
// system(stream.str().c_str());
}
else
{
exit(0);
}
}
这是输出:
Press 1 to open Remainder:
Press any other key to exit:
1
'C:\Documents' is not recognized as an internal or external command,
operable program or batch file.
Press any key to continue . . .
但是当我输入我的用户名时,它会完美运行..
我想在另一台计算机上使用这个程序,所以我使用了环境变量
任何帮助?
感谢。
答案 0 :(得分:0)
您需要一组额外的报价。像这样使用它。
system("\"\"C:\\Documents and Settings\\%USERNAME%\\My Documents\\CorelDRAW X3.txt\"\"");
答案 1 :(得分:0)
您的问题是(错误地)使用system
函数调用来打开文本文件。它不处理文件名中的空格,因为system
使用这些空格将程序与其参数分开。虽然这可以通过将程序(或在您的情况下是文本文件)名称放在另一组引号中来解决,但这不是真正正确的修复。
尝试使用ShellExecute
代替Windows API - this answer.
答案 2 :(得分:0)
您应该避免使用system ()
,但如果您愿意,可以使用GetUserName
函数获取用户名,并将其放入字符串中。