我想创建一个文件generated.txt到" I:\ Dropbox .... \ generator \"文件夹中。
// array with 7 elements filled with 0
int num[7] = {0};
// create text file to write into genereted numbers
ofstream generated;
generated.open("I:\\Dropbox\\visual studio 2013\\Projects\\Number generator\\generated.txt", ios::app);
// seed... without that function randomed one time
srand(time(NULL));
// randomize the array values
for (int i = 0; i < 7; i++){
num[i] = rand();
generated << " \t" << i+1 << ": " << num[i];
}
generated << endl;
generated.close();
`
但是,如果我在另一台没有的电脑上运行程序&#34;我:\&#34;磁盘,它不工作,也程序工作,但它不会保存生成的数字。 所以我的问题是:如何使用generated.txt文件在另一台PC上创建目录?它应该运行程序并在那里程序droped创建文件。 谢谢,对不起我的英文)
答案 0 :(得分:2)
C++11不知道目录(可能在实验中改变C ++ 14)。
您需要一些特定于操作系统的API。如果您的系统(例如Linux)拥有它,请考虑POSIX(例如其mkdir,chdir
,readdir
函数。)
或者使用一些包装OS特定功能的库,例如POCO或Boost或Qt
顺便说一句,你可以使用getenv(3)(或某些程序参数或配置数据)的环境变量,并从中构建一些文件路径(例如使用snprintf
)。
请注意,目录的概念是特定于操作系统的。并且某些操作系统并不总是使用/
(按POSIX的要求)作为目录分隔符。
BTW,我正在使用Linux,而"I:\\Dropbox\\visual studio 2013\\Projects\\Number generator\\generated.txt"
这样的文件路径与您的PC上的行为完全相同。 (在我的系统上,你的文件路径没有引用任何目录,它只是一个奇怪的文件名,以当前目录中的I:
开头)
答案 1 :(得分:0)
使用argv[0]
获取包含程序可执行文件路径的字符串。
下面可以看到示例
#include <iostream>
#include <string>
#include <sstream>
int main(int argc, char *argv[])
{
std::cout<<argv[0]<<std::endl;
std::stringstream sst(argv[0]);
//char delimeter='/'; //for Linux
char delimeter='\\'; //for Windows
std::string part, full="", part_prev="";
while (std::getline(sst, part, delimeter))
{
full+=part_prev;
part_prev=part+delimeter;
}
full+="generators.txt";
std::cout<<full<<std::endl;
return 0;
}