不理解这个代码什么意思?关于子串个数的问题

给你若干个字符串,请编程输出每个字符串的子串个数。
输入
若干个字符串,每个字符串占一行,字符串中不含空格,长度最大为1000。
输出
对应每一行的字符串,输出该字符串子串的个数

代码如下

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s;
    while (getline(cin, s)) { // 读入一行字符串
        int n = s.size(), ans = 0;
        for (int i = 0; i < n; i++) { // 枚举起点
            for (int j = i + 1; j <= n; j++) { // 枚举终点
                ans++; // 子串个数加1
            }
        }
        cout << ans+1 << endl; // 输出子串个数
    }
    return 0;
}

说白了,比如有字符串 abcd
那么它有如下子串

a
b
c
d
ab
bc
cd
abc
bcd
abcd

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^