谁来帮我看看这个c++小程序,交换两个包含空格的字符串

来源:百度知道 编辑:UC知道 时间:2024/05/07 13:04:34
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
int n,k=0,i=0;
char str1[1000],str2[1000],str3[1000],str[1000];
while(cin>>n)
{
for(k=1;k<=n;k++)
{
cout<<"Case "<<k<<": "<<endl;
str1=cin.getline(str,1000,'\n');
str2=cin.getline(str,1000,'\n');
strcpy(str3,str1);
strcpy(str1,str2);
strcpy(str2,str3);
cout<<str1<<endl;
cout<<str2<<endl;
}
}
return 0;
}
这个程序哪里出问题了

str1=cin.getline(str,1000,'\n');
str2=cin.getline(str,1000,'\n');
这两句话是错误的,getline()是返回调用函数的对象的指针,在这里对象是cin , 而 str1 与 str2 的类型是 char型, 这样的赋值是不对的。
正确的写法应该是
cin.getline(str1,1000,'\n');
cin.getline(str2,1000,'\n');
第一句话的意思是从 控制台里输入 字符串 给 str1,以1000个字符 或者是回车结束,
第二句话的意思是从 控制台里输入 字符串 给 str2,以1000个字符 或者是回车结束,
对于交换语句:strcpy(str3,str1);
strcpy(str1,str2);
strcpy(str2,str3);
是正确的。

这是在干嘛..没看懂,,,用vector<string> vstr1, vstr2;
vstr1.swap(vstr2); // vstr1 与 vstr2 交换..