C++ 中string类如何创建动态数组?求助!!!
题目是:去除标点符号,将其输出保存我的可以通过编译,但是出不来结果,老是出错。#include<iostream>#include<string>usingnamespa...
题目是:去除标点符号,将其输出保存
我的可以通过编译,但是出不来结果,老是出错。
#include<iostream>
#include<string>
using namespace std;
int main(){
string temp;
string *str=new string [];
string s;
while(getline(cin,temp)){
unsigned a=0;
for(unsigned i=0;i<temp.size();i++){
if(ispunct(temp[i]))
continue;
else{
*(str+a)=temp[i];
++a;
}
}
s=*str;
cout<<s<<endl;
}
return 0;
} 展开
我的可以通过编译,但是出不来结果,老是出错。
#include<iostream>
#include<string>
using namespace std;
int main(){
string temp;
string *str=new string [];
string s;
while(getline(cin,temp)){
unsigned a=0;
for(unsigned i=0;i<temp.size();i++){
if(ispunct(temp[i]))
continue;
else{
*(str+a)=temp[i];
++a;
}
}
s=*str;
cout<<s<<endl;
}
return 0;
} 展开
3个回答
展开全部
string其实就是对动态数组的封装,因此你不必在动态new,当然要这么做也可以,但是写法是string* pstr = new string;即可。不过你的问题不是出在这里,我改写了下,在vs2012下测试通过。
#include <iostream>
#include<string>
using namespace std;
int main( int nArgc, char** szArgv )
{
string *pstrOut = new string;
string s;
cin>>s;
for ( string::size_type i = 0; i < s.size(); i++)
{
if ( !ispunct(s[i]))//过滤条件
{
*pstrOut +=s[i];
}
}
cout<<*pstrOut<<endl;
return 0;
}
但是,严格说,这个程序不支持中文等非ascii码。所以还是有漏洞,我就没细细考虑了。
#include <iostream>
#include<string>
using namespace std;
int main( int nArgc, char** szArgv )
{
string *pstrOut = new string;
string s;
cin>>s;
for ( string::size_type i = 0; i < s.size(); i++)
{
if ( !ispunct(s[i]))//过滤条件
{
*pstrOut +=s[i];
}
}
cout<<*pstrOut<<endl;
return 0;
}
但是,严格说,这个程序不支持中文等非ascii码。所以还是有漏洞,我就没细细考虑了。
展开全部
C++本身并不支持动态数组,但是可以通过动态申请内存实现动态数组的功能。
实现代码的例子如下:
int count;
cout<<"请输入数组大小";
cin>>count;
string *ptr=new string[count];
//下面就可以使用类似动态数组的数据
delete []ptr; // 不用的时候务必自己释放该内存
实现代码的例子如下:
int count;
cout<<"请输入数组大小";
cin>>count;
string *ptr=new string[count];
//下面就可以使用类似动态数组的数据
delete []ptr; // 不用的时候务必自己释放该内存
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-29
展开全部
这要能通过编译,编译器可以去屎了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询