这个代码为什么会提示堆栈溢出?

#include
#include
#include
using namespace std;
string f(string alin)
{
string blin;
if (sizeof(alin) == 1) return alin;
blin = alin.substr(0 , 1);
return f(alin.substr(1))+blin;

return 0;

}
int main()
{
string alin;
cin >> alin;
f(alin);
return 0;

}

sizeof(alin) == 1 永远不会满足
用alin.size() == 1或者alin.length() == 1

试一下
//c++
#include
#include
#include
using namespace std;
string f(string alin)
{
string blin;
//计算字符串长度 .cstr()是获取alin的指针
if (strlen(alin.c_str()) == 1) return alin;
blin = alin.substr(0, 1);
return f(alin.substr(1)) + blin;
}
int main()
{
string alin;
cin >> alin;
cout << f(alin);
return 0;
}