我正在尝试将字符串的内容从一个变量复制到另一个变量。我没有任何错误,但是没有打印任何内容。任何帮助将不胜感激。
Following is the code:
#include <iostream>
using namespace std;
string strcopy(string &s1, string &s2)
{
int i=0;
for(i=0;s1[i]!='\0';i++)
s2[i]=s1[i];
s2[i]='\0';
return s2;
}
int main()
{
string str1,str2;
cout<<"Enter a string:";
getline(cin,str1);
str2=strcopy(str1, str2);
cout<<str2;
return 0;
}
答案 0 :(得分:0)
您正在访问s2
(对str2
的引用)超出范围。 std::string::operator[]
不会进行任何边界检查,并且绝对不会增加字符串的大小。
您似乎正在执行C类的字符串复制。在C ++中,这不是必需的。 std::string
有一个operator=
。使用它:
int main()
{
std::string str1,str2;
std::cout << "Enter a string:";
std::getline(cin,str1);
str2 = str1; // bam, so simple
std::cout<<str2;
return 0;
}
代码中的另一个错误是您不包括<string>
。我建议避免使用using namespace std
。
答案 1 :(得分:0)
#include <iostream>
int main()
{
string str1,str2;
cout<<"Enter a string:";
getline(cin,str1);
stusing namespace std;
string strcopy(string &s1, string &s2)
{
//int i=0;
//for(i=0;i<s1.length();i++)
//s2[i]=s1[i];
//s2[i]='\0';
s2=s1;
return s2;
}
int main()
{
string str1,str2;
cout<<"Enter a string:";
getline(cin,str1);
str2=strcopy(str1, str2);
cout<<str2;
return 0;
}