我正在疯狂地理解为什么第二个例子不起作用......
CString _slashes;
CString _path;
_slashes = _T("\\");
_path.Format(_T("AA\\BB")); // WORKS
_path.Format(_T("AA"),_slashes,_T("BB"),_slashes); // NOT WORK!
paramtreize斜杠字符的目的是能够设置'\'或'/' 如何在CString中插入'\'字符?
TNKS!
答案 0 :(得分:2)
Format
的作用并非如此
试试这个:
_path.Format (_T ("AA%sBB%s"), (LPCTSTR)_slashes, (LPCTSTR)_slashes)
这可能不是处理斜杠的最好方法,你不应该用下划线开始你的变量名。
如果您使用的是MFC,那么您的应用程序几乎只支持Windows。大多数Windows命令都可以使用正斜杠,但我会坚持使用反斜杠。
答案 1 :(得分:2)
CString::Format
采用printf
- 样式格式字符串,因此您可以使用:
_path.Format("%s%s%s%s", _T("AA"), _slashes, _T("BB"), _slashes);
编辑:
有人认为这可以更好地写成:
_path.Format("%s%s%s%s", _T("AA"), (LPCTSTR)_slashes., _T("BB"), (LPCTSTR)_slashes);
虽然这在实践中没有任何区别,但是有一些争论的余地,它增加了一定程度的安全性而没有演员阵容。
或者,您可以将各个部分连接在一起,例如:
_path = _T("AA");
_path += _slashes;
_path += _T("BB");
_path += _slashes;
如果我这样做,我可能会使用Boost FileSystem
,它已经提供了make_preferred
,它将路径转换为使用本机路径分隔符(例如,将转换为AA/BB
如果您在Windows上运行它,请AA\BB
。
答案 2 :(得分:-1)
抱歉..有很多时间我没有用C ++ xD编程
_path.Format(_T("AA%sBB%s"),_slashes,_slashes); // This works!