C字符串.格式化插入斜杠
CString.Format insert slash
我开始疯狂地理解为什么第二个例子不起作用。。。
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!
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- 如何将结构插入到集合中并打印集合的成员
- C++格式化输出问题
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 有效地使用std::unordered_map来插入或增加键的值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 正在插入动态数组
- 插入或删除时获取usb的dos_name
- 叮叮当当在修复时插入多个"覆盖"说明符
- 链表c++插入,所有情况都已检查,但没有任何工作
- 格式化浮点值:返回默认值
- 在未格式化的文本文件中插入回车
- C字符串.格式化插入斜杠
- 格式化的输出算术插入器