关于string的疑问
刚开始学C++,望大家不吝赐教
#include<iostream>
#include<string>
#include<cctype>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
string s1("asdfasf,fas.sd"),s2;
string::size_type a,b;
b=0;
for(a=0;a<s1.size();a++)
{
if(!ispunct(s1[a]))
s2[b++]=s1[a];//这个地方为什么会有问题??谢谢
}
cout<<s2<<endl;
return 0;
}
写成下面就没问题,有什么不同,谢谢。
#include<iostream>
#include<string>
#include<cctype>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
string s1("asdfasf,fas.sd");
char s2[100];
string::size_type a,b;
b=0;
for(a=0;a<s1.size();a++)
{
if(!ispunct(s1[a]))
s2[b++]=s1[a];
}
s2[b]=0;
cout<<s2<<endl;
return 0;
}
[解决办法]
s2.resize(s1.size()); // s2先撑一下空间