C++里面反转字符串怎么保留空格

反转字符串比如hello world转为dlrow olleh,但我写的代码没办法保留空格,请问原因,以及怎么改。万分感谢。代码:
#include
#include
using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
string s;
int len;
int tem[1];
cout<<"Please enter a string:"<<endl;
cin>>s;
len=s.length();
for(int i=0;i<=(len/2);i++){
tem[0]=s[i];
s[i]=s[len-1-i];
s[len-1-i]=tem[0];
}
cout<<s<<endl;
return 0;
}

img

cin>>s可能不行,遇到空格就任务输入结束了,改成getline(cin,s);


int main(int argc, char *argv[])
{
    char s[100],tem; // string s;
    int len;
    //int tem[1];
    cout << "Please enter a string:" << endl;
    // cin >> s;
    cin.getline(s, 99);
    len = strlen(s); // s.length();
    for (int i = 0; i <= (len / 2); i++)
    {
        tem = s[i];
        s[i] = s[len - 1 - i];
        s[len - 1 - i] = tem;
    }
    cout << s << endl;

    return 0;
}
建议你看下这篇博客C++中判断在字符串中是否存在空格 以及 如何输入带空格的字符串