目前刚在学习c++中
在写一个猜数字的小游戏,就是几A几B那一种的
可是我遇到了一个问题
就是当USER 输入很长的一串字符的时候 就会造成程式HANG住
很想知道这是什么原因。
如果有人知道请教导一下 >"< 感谢!!!
是不是用 char[] 当输入资料? 用 std::string 会比较好
是的我是用char因为要比对的原因… 用char比较方便…
这种情况发生在产品中可能会是个黑帽攻击的安全漏洞可以利用scanf的长度限制功能 %50s 就是指从输入区存入50个字符,当然长度可以自己订另一种是用 std::string 的 str.c_str()回传的是 std::string 里面的 char*
作者:
LPH66 (-6.2598534e+18f)
2016-03-21 18:43:00不过比对字串 char* 或 char[] 没有比较方便...两个char*比较用strcmp(),可是用 std::string 只要 ==
作者: WBTs (加权平衡树) 2016-03-21 18:47:00
str1 == str2 就好啦,很方便不是?其实WBTs大分享的方法有个小问题需要注意,C++11没有VLA虽然GCC很好心的让你在C++里用VLA,但是MSVC++会拒绝str_a.c_str() 就能得到 char*,不用这么麻烦
作者: WBTs (加权平衡树) 2016-03-21 19:12:00
用动态阵列
作者: tuyutd0505 (Huang Jason) 2016-03-21 19:59:00
如果要抓出 string 中字符 除了[i]外也可以用相对安全的 str.at(i)