LeetCode C++中出现\x00 是怎么回事?

2016-08-02 12:51:53 +08:00
 livc
一道简单的反转字符串的题,初始 string 为空就会出现\x00 ,之前在 OJ 上做题从没出现过这种情况呀。
输入:"hello"

输出:"\x00olleh"


输出:"olleh"
3861 次点击
所在节点    程序员
14 条回复
sgissb1
2016-08-02 13:03:23 +08:00
作为一名 c++程序员,我表示没必要解释。这么低级的错误。
hitmanx
2016-08-02 13:05:47 +08:00
s[len]溢出了吧。 std::string 不是 null-terminated,话说即使是 null-terminated c-string ,把\0 拷到第一位也不对啊。
svenFeng
2016-08-02 13:07:16 +08:00
第一个 s[len-i] 越界了吧, i=1 就对了
acros
2016-08-02 13:08:11 +08:00
扳指头数一下 0-n```
shuax
2016-08-02 13:09:36 +08:00
你根本不是司机,哦,不是程序员
qian19876025
2016-08-02 13:18:13 +08:00
也只能说 无语
RockShake
2016-08-02 13:23:33 +08:00
LZ 你仔细看下代码
limhiaoing
2016-08-02 13:27:12 +08:00
C++11 规定
对于类型为 std::string 的变量 s;
s[s.length()] == '\x00'
LeetCode 支持 C++11 ,所以会出现这种情况。

结果和你预期不符合是你代码写错了。
Yc1992
2016-08-02 13:28:57 +08:00
代码这个东西,出了错先别甩锅,九成九是自己的问题
livc
2016-08-02 13:41:40 +08:00
@hitmanx
@svenFeng
@acros
@RockShake
@limhiaoing 感谢指出,蒙比了今天。。
SuperFashi
2016-08-02 17:48:57 +08:00
作为一个写 C++的,难道 STL 对大多数人来说都是废库一个啊。

reverse(s.begin(), s. end())

http://zh.cppreference.com/w/cpp/algorithm/reverse
srlp
2016-08-02 20:07:57 +08:00
@SuperFashi 这个练习的目的就是写出了 reverse
zhanglintc
2016-08-02 22:26:01 +08:00
@SuperFashi 你这是作弊,哈哈
kives
2016-08-03 19:09:52 +08:00
翻转字符串简单吗?我觉得不简单啊,考虑 utf8 格式的字符串试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/296544

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX