CString.Format插入斜杠

时间:2013-12-05 15:49:59

标签: c++ visual-studio-2010 mfc

我正在疯狂地理解为什么第二个例子不起作用......

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!

3 个答案:

答案 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!