带有额外":"或"-" C++ 的可视文件名
visual Filename with an extra ":" or a "-" c++
我想创建一个字符为":","-"的文件名。我尝试使用以下代码将日期和时间附加到我的文件名。
Str.Format(_T("%d-%d-%d-%d:%d:%d.log"),systemTime.wDay ,systemTime.wMonth ,systemTime.wYear,systemTime.wHour,systemTime.wMinute,systemTime.wSecond);
std::wstring NewName=filename.c_str() + Str;
MoveFileEx(oldFilename.c_str(), NewName.c_str(), 2 )
MoveFileEx失败,windows ErrorCode 123(ERROR_INVALID_NAME)。所以我认为问题是我的新文件名包含":"answers"-"
谢谢,
确实,您不能在windows文件名中使用:
字符。用别的东西代替它。如果程序依赖于名称,则修改它以解释替代分隔符。
"我想创建…"不,你不需要。不同的系统对文件名中的合法内容有不同的限制。大多数现代系统都允许相当长的名称(比如超过100个字符),并且不会对它们施加格式(尽管Windows仍然处理最后一个.
之后的任何内容,如果有的话,特别地,所以您要小心)。如果您不关心可移植性,您可以简单地遵循您所在系统的规则:在Unix下,没有'/'
或' '
(但我也会避免Unix shell认为是元字符的任何内容:至少()[]{}<>!$|?*"
和反打号中的任何内容),并且我会避免以'-'
开头的文件名。Windows正式禁止<>:"/|?*
中的任何内容;在这里,我将避免任何其他程序可能认为特殊的东西(包括使用两个%
,它们可以被解释为shell变量),并且我还会注意,如果存在.
,则最终的.something
对系统是有意义的。(如果文件名已经以类似.log
的内容结尾,那么在此之前添加点是没有问题的。)
Windows不允许创建一些特殊字符作为文件名。
但是,对于使用当前日期和时间创建文件名,您可以使用此格式。
CTime CurrentTime( CTime::GetCurrentTime() );
SampleFileName = CurrentTime.Format( _T( " %m_%d_%y %I_%M_%S" ) ) + fileExtension;
更多时间格式,请参考
相关文章:
- 可视化 如何在 c++ 中制作特定大小的文件?
- 可视化C++:发布模式的运行时库作为'Multi-threaded Debug DLL'
- 提升如何在图形可视化中写入边缘的权重?
- 如何在大型c++项目的可视化代码中设置调试
- 可视化编译与 C++ 中的 Extern 变量
- 可视化 Bazel C++预编译标头实现
- 无法为 X.radio 创建中等可视化,因为找不到网络节点可视化 - Omnet++
- C++合并排序可视化工具
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- 可视化 将字符串解析为数组以进行C++
- 可视化 如何在C++中将字符数组转换为 FILE 类型
- 可视化C++载体:未使用的容量
- 可视化 如何在 c++ 中截断
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- 使用快速排序对 C++ 中的可视化工具错误进行排序
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- OpenCV 中大量可视化::Widget3D 的性能不佳
- GCC、CLANG 和 MSVC 的可视化C++自动矢量化要求
- 如何在可视化代码中生成用于 c++ 开发的调试器?
- 图形可视化作为窗口中的库