【发布时间】:2015-12-17 15:52:22
【问题描述】:
我遇到了这个代码:
std::string str;
std::getline(std::cin, str);
std::string sub = str.substr(str.find('.') + 1);
第一反应是 - 这是无效代码。但经过一番思考,似乎并没有那么简单。那么它是有效的 C++ 表达式(具有可预测的行为)吗?
PS 如果不是很清楚,问题主要与'.' 时会发生什么有关。在str 中找不到,但不限于此,可能还有其他问题。
【问题讨论】:
-
字面意思和上面一样吗,里面有
...?!?还是关于substr行的问题? -
第一反应是 - 这是无效代码。 为什么?
-
@Slava 好吧,你是那个声称你对明显无效的代码感到惊讶的人。
substr行对我来说一点也不奇怪。通过使用...而不是"foobarbaz",您违反了基本规则并且未能提供 SSCCE。 -
您是否费心查找文档?我不明白你为什么觉得有必要发布这个问题。
std::string::find,std::string::substr -
@Slava,那么请继续将这条重要信息添加到您的问题中。
标签: c++ string integer-overflow