我正在努力解决一个奇怪的问题。 我想为我的程序解决方案创建一个文件夹,并且我已经编写了以下代码:
timer = time(NULL);
path.assign(".\\Solution_");
path.append(ctime(&timer));
ch1 = ':';
ch2 = '_';
for (i = 0; i < path.length(); ++i) {
if (path[i] == ch1 || path[i] == ' ')
path[i] = ch2;
}
mkdir(path.c_str());
即使路径等于&#34; ,它也不会创建任何内容。\ Solution_Thu_Jun_12_10_10_31_2014 &#34;如果我输入
mkdir(".\\test");
它正常工作。 我做了很多测试,我尽我所能,但我无法弄清楚是什么错。 有人可以帮我吗? 最好, 罗伯特
详情:
即使我使用mkdir(path.c_str());
的路径等于&#34; Solution_Thu_Jun_12_11_52_04_2014&#34; (没有任何\)它无论如何都不起作用,而另一方面&#39; mkdir(&#34; test&#34;);&#39;的工作原理。
解决方案: 好的,有一个隐藏的换行符。 谢谢大家的帮助: - )!!!
答案 0 :(得分:0)
您遇到的问题是反斜杠字符是转义序列的开头。这些用于在流中输入不可打印的字符(制表符,回车符等)。
所以你的程序看到一个反斜杠,并期望下一个字符是一个命令字符。如果它看到另一个反斜杠,那么它知道你想要一个反斜杠而不是一个转义序列,因此为什么\\有效,\不用。
由于您运行的是Windows,您可以使用CreateDirectory函数。
你所提出的例子是C,而不是C ++。你从哪个来源学习?
答案 1 :(得分:0)
检查Windows中的文件名是否有换行符或任何其他非法字符。你的错误看起来像那样。
windows不允许文件名
中包含这些字符<>?/\| or newline