g++ 5.4.0编译器处理substr有bug

默认分类 · 2017-12-27

最近用c++写了个nginx-blog,
由于自己用的是deepin操作系统,上面的g++版本
比较新,是g++6.4.0,编译测试都没有问题,而在服务器上测试总是有问题,调试半天
终于发现问题所在。

1.问题

问题就是处理空格隔开的字符串的时候,有时候会取回空值,我大概的程序是这样的。

string tag("linux编程 c++");
size_t pos = tag.find_first_of(" ");
string after_tags = &tag[pos+1];
cout << after_tags << endl;

5.4.0和6.4.0版本的g++编译通过都没问题,
5.4.0输出结果是"",6.4.0版本输出结果是"c++"

2.解决办法

知道问题,解决就很简单了,直接改为

string after_tags = tag.substr(pos+1);

问题解决了,这算不算bug呢?不知道

编程 c++
Theme Jasmine by Kent Liao