C++ 的string越界问题

2018-11-05  本文已影响0人  professordeng

在 C++ 中 string 是一个类,里面包含一个 char 类型数组,可以利用 append() 或者 += 重载符扩展数组。

如果直接用下标访问,则可以会出现越界。如下

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

string test(string s1) {
    string s;
    for(int i = 0; i < 100; i++)
        s[i] = '0';
    return s;
}

int main() {
    string s;
    s += test(s);
    s += "fsdgsgas";
    cout << s << endl;
    cout << s.size() << endl;
    getchar();
    return 0;
}

正确的做法是用 += 重载符在 string 后面添加内容。

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

string test(string s1) {
    string s;
    for(int i = 0; i < 100; i++)
        s += '0';
    return s;
}

int main() {
    string s;
    s += test(s);
    s += "fsdgsgas";
    cout << s << endl;
    cout << s.size() << endl;
    getchar();
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读