将 '\b' 连接到 std::string 究竟有什么作用?
What does concatenating '\b' to std::string exactly do?
我很好奇。连接 \b
对 std::string
有什么作用?
它会简单地将 '\b'
添加到字符串的末尾,还是添加 pop_back
,这种行为是否已定义?虽然我可以测试它,但我不能在每个平台上做这个实验。
一些额外的问题是,如果它只是将退格键连接到字符串,这个比较 return 是对还是错?
std::string foo = "asdf\b";
std::string bar = "asd";
if(foo == bar)
编辑:我很确定它只是连接 '\b'
但我只是想确定一下。
or do pop_back?
无论您使用哪个平台,都不会。
does this comparison return true or false?
错误。
因为 '\b'
和所有其他字符一样也是 ASCII 字符。
C++不会对字符的功能做任何猜测,因为它们只是整数,没有什么特别的。 '\b'
的功能由其他程序处理,它们不会删除字符串中的任何元素。
[cling]$ #include <string>
[cling]$ std::string a = "abcd"
(std::string &) "abcd"
[cling]$ std::string b = "abcde\b"
(std::string &) "abcde\x08"
[cling]$ a == b
(bool) false
我很好奇。连接 \b
对 std::string
有什么作用?
它会简单地将 '\b'
添加到字符串的末尾,还是添加 pop_back
,这种行为是否已定义?虽然我可以测试它,但我不能在每个平台上做这个实验。
一些额外的问题是,如果它只是将退格键连接到字符串,这个比较 return 是对还是错?
std::string foo = "asdf\b";
std::string bar = "asd";
if(foo == bar)
编辑:我很确定它只是连接 '\b'
但我只是想确定一下。
or do pop_back?
无论您使用哪个平台,都不会。
does this comparison return true or false?
错误。
因为 '\b'
和所有其他字符一样也是 ASCII 字符。
C++不会对字符的功能做任何猜测,因为它们只是整数,没有什么特别的。 '\b'
的功能由其他程序处理,它们不会删除字符串中的任何元素。
[cling]$ #include <string>
[cling]$ std::string a = "abcd"
(std::string &) "abcd"
[cling]$ std::string b = "abcde\b"
(std::string &) "abcde\x08"
[cling]$ a == b
(bool) false