在c++里如何输入一个string类的字符串,我定义的是字符串变量string str,比如输入c a s t中间有空格呀
如果用cin>>那碰到空格就截止了,如果用cin.getline(str,100)好像写法不对,那怎末从键盘输入string类的字符串呢,请教达人们!那string类和c...
如果用cin>>那碰到空格就截止了,如果用cin.getline(str,100)好像写法不对,那怎末从键盘输入string类的字符串呢,请教达人们!
那string类和char*p这两个的关系是什么,难道是string str;char*p=str,应该不对,那怎样把string类的字符串赋给p???具体写法是什么???? 展开
那string类和char*p这两个的关系是什么,难道是string str;char*p=str,应该不对,那怎样把string类的字符串赋给p???具体写法是什么???? 展开
5个回答
展开全部
如果是一个字符型数组的话,可以用cin.getline(str,100);
但是如果是string类的字符串,由于string类字符串不指定长度的,因此不能用这条语句。
应该直接用cin>>str;但是string类不能存放多个字符串,也就是说中间不能有空格,要输入 c a s t这样的建议使用字符型数组或者字符型指针,然后用cin.get(str,100).get();或分开写,cin.get(str,100);cin.get();
这样输入,老式编译器不支持不带参数的get(),可以用char ch;get(ch);来代替cin.get();
但是如果是string类的字符串,由于string类字符串不指定长度的,因此不能用这条语句。
应该直接用cin>>str;但是string类不能存放多个字符串,也就是说中间不能有空格,要输入 c a s t这样的建议使用字符型数组或者字符型指针,然后用cin.get(str,100).get();或分开写,cin.get(str,100);cin.get();
这样输入,老式编译器不支持不带参数的get(),可以用char ch;get(ch);来代替cin.get();
展开全部
char *到string类可以直接用=,因为string类重载了=操作符,而且提供了以char *为源的拷贝构造函数.
但string到char *就不能用=了,string类的c_str()函数可以返回它的字符串的首地址,你可以用如下方法将string赋给char *.
#include <iostream>
using namespace std;
void main()
{
string a="abcd";
char *p;
p=new char[a.length()+1];
strcpy(p,a.c_str());
cout<<p<<endl;
}
但string到char *就不能用=了,string类的c_str()函数可以返回它的字符串的首地址,你可以用如下方法将string赋给char *.
#include <iostream>
using namespace std;
void main()
{
string a="abcd";
char *p;
p=new char[a.length()+1];
strcpy(p,a.c_str());
cout<<p<<endl;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你用cin>>或scanf()函数的话,遇到空格会返回;
如果你用gets()函数的话,遇到空格就不会返回了,遇到回车才返回;
gets()格式:
char *p;
gets(p);
那么字符串就以p为首地址存放,记得给p分配足够的空间就好。
如果你用gets()函数的话,遇到空格就不会返回了,遇到回车才返回;
gets()格式:
char *p;
gets(p);
那么字符串就以p为首地址存放,记得给p分配足够的空间就好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
using namespace std;
int main()
{
string str1;
char str2[20];
int l1,l2;
getline(cin,str1);//输入
l1=str1.length();//计算字符串长度
gets(str2);//输入
l2=strlen(str2);//计算字符串长度
cout<<"str1: "<<str1<<"\t\tlength str1: "<<l1<<endl
<<"str2: "<<str2<<"\t\tlength str2: "<<l2<<endl;
system("pause");
return 0;
}
//DEV-CPP
慢慢体会……
using namespace std;
int main()
{
string str1;
char str2[20];
int l1,l2;
getline(cin,str1);//输入
l1=str1.length();//计算字符串长度
gets(str2);//输入
l2=strlen(str2);//计算字符串长度
cout<<"str1: "<<str1<<"\t\tlength str1: "<<l1<<endl
<<"str2: "<<str2<<"\t\tlength str2: "<<l2<<endl;
system("pause");
return 0;
}
//DEV-CPP
慢慢体会……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
补充1楼的, 声明p的时候可以用
char p[100]; 这样免除使用动态内存
char p[100]; 这样免除使用动态内存
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询