C字符串.格式化插入斜杠

CString.Format insert slash

本文关键字:插入 格式化 字符串      更新时间:2023-10-16

我开始疯狂地理解为什么第二个例子不起作用。。。

CString _slashes;
  CString _path;
  _slashes = _T("\");

  _path.Format(_T("AA\BB"));      // WORKS
  _path.Format(_T("AA"),_slashes,_T("BB"),_slashes);      // NOT WORK!

参数化斜杠字符的目的是可以设置"\"或"/"如何在CString中插入"\"字符?

Tnks!

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,它将使用本机路径分隔符转换路径(例如,如果在Windows上运行,它将把AA/BB转换为AABB)。

Format不是这样工作的
试试这个:

_path.Format (_T ("AA%sBB%s"), (LPCTSTR)_slashes, (LPCTSTR)_slashes)

不过,这可能不是处理斜杠的最佳方式,并且不应该以下划线开头变量名。

如果您使用的是MFC,那么您的应用程序几乎只是Windows。大多数Windows命令都可以使用正向斜杠,但我会坚持使用反向斜杠。

对不起。。有很多时间我没有用C++xD 编程

  _path.Format(_T("AA%sBB%s"),_slashes,_slashes);   // This works!