C++都是string 如何将其中一个string 赋值给另外一个? 1C

class Stu{
public:
Stu()
{
name[20] = {0};
addr[100] = {0};
num = "\0";
score = 0.0;
sex = 'f';
}
Stu(char Name[], char Addr[], string Num, double Score, char Sex)
{
strcpy(name, Name);
strcpy(addr, Addr);
strcpy(num, Num); //这里提示我错误,但是我不知道除了这个还能写什么?
score = Score;
sex = Sex;
}
}
//错误是这样的: [Error] cannot convert 'std::string {aka std::basic_string}' to 'char*' for argument '1' to 'char* strcpy(char*, const char*)'

0

3个回答

string和char *是不同的类型,所以不能直接对其进行赋值或拷贝操作;
string是一个封装的容器,string的内部实现是采用的char *来实现的,

解决办法1:

 将类的数据成员num改为string num,然后构造函数中不采用strcpy方式,直接用:
 num = Num;

解决办法2:
也就是楼主后面所说的把Num改为char Num[]的形式,因为这是两者都为char *类型,因为类型是相同的;
所以编译不会报错;

0

Num.c_str(); 用这个。好好看下string 类吧

0

class Stu{
public:
Stu()
{
name[20] = {0};
addr[100] = {0};
num[10] = {0}
score = 0.0;
sex = 'f';
}
Stu(char Name[], char Addr[], char Num[], double Score, char Sex)
{
strcpy(name, Name);
strcpy(addr, Addr);
strcpy(num, Num);
score = Score;
sex = Sex;
}

    我改用数组倒是可以
-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请教如何将一个string 赋值给CString?
我用了一个EditBox,定义了一个变量m_strEdit;rnifstream in("d.c");rnstring str1;rngetline(in, str1);rnm_strEdit = str1; //这一句出错,rnUpdateData(FALSE);rn请问如何修改?rn
如何将一个PAnsiChar指向的字符串赋值给一个string
如题
怎样给一个String变量的一部分赋值
比如String aaa="0000111";rn 我要把111换成000怎么搞?
简单问题:如何将一个string赋值给byte数组
varrnstr:string;rna:array[0..7] of byte;rnbeginrnstr:='1234567890aa';rn如何将str前8个字符付给a,不到8个字符用$20代替。
请问如何将当前的时间赋值给一个string变量?
请问如何将当前的时间赋值给一个string变量?
如何将一个CString中的内容赋值给托管String ?
如何将一个CString中的内容赋值给托管String ?rnrn谢谢!
如何将char数组赋值给string变量
如何将char数组赋值给string变量rn求救啊大神们
如何将数字赋值给string?(在线等待)
用惯了别的语言,在代码里写了N多类似的strValue = 1;的语句。rn调试起来才发现C++的string是将数字转成ASCII码后存放的。rn由于要改的代码太多,有什么好的方法可以将数字赋值给string?
如何将string中的字符赋值给char*?
string a;rncin >> a;rnchar* b = new char[(int)a.size()];rn如何把a中的字符赋给b?rnrn还有,在控制台中,怎样实现Press Any Key to Escape?rn是system("pause");吗?
如何将Null赋给一个string变量
哪位大侠晓得?null不能赋值给非variant变量;通过什么方法可以啊?谢谢!
如何将MemoryStream付值给一个string
环境如下:rnint L,M,N(L>M>N)rnrnMemoryStream mStream (已包含长度为L的数据)rnstring myStringrn目标:myString= mStream[m,n],即将mStream中从M到N的数据付值给Stringrn
如何将一个string变为string数组
比如说string a="a,b,c,d"rn如何变成数组呢。rnrn
如何将一个SqlDataReader赋值给另外一个SqlDataReader?谢谢!!!
我已经定义了一个SqlDataReader:custdr;并对其已经填充数据,rn另外定义一个SqlDataReader:custdr1,rn如何把custdr的内容赋值到custdr1???rn谢谢!!
怎样把一个string赋值给一个array of pchar
怎样把一个string赋值给一个array of pchar
c# 怎么把一个双引号赋值给一个string 变量?
我试过:rnstring arg = """"; //报错rnstring arg = "\""; //得到的值是\"rnstring arg=chr(34); //报错rnSystem.Convert.ToString((char)34) //得到的值是\"
如何给一个String变量赋值一个ASCLL码值?
JDK里没找到答案:(
如何将一个string转为int?
如何将一个string转为int?
如何将一个WORD转化成STRING
我要将键盘输入的字符赋给一个STRING,例如edit1.TEXT:=EDIT1.text+chr(key);rn但是输入的特殊字符如",.[]"不能在edit中显示,请问如何解决。
如何将一个string转化成Date?
在脚本里将"yyyy-mm-dd"型的字符串转成Date,怎么转?
文本赋值给string问题
D盘下有一些文件,他们的名字是abc1,abc2一直到abc100rn里面都是一些sql语句 怎么把他们赋值给string变量然后jdbc连接数据库运行这些string呢。rnrn谢谢
将int赋值给String
int i=10;rnString str;rnrn怎样将i变成字符串赋给str呢,即最终str里的值是"10"
string 赋值给 char[], 编译报错!
rn这个代码有什么问题:?rn string str("123456");rn char szline[100];rn szline = str.c_str();rnrn 编译提示报错:rn error C2440: “=”: 无法从“const char *”转换为“char [100]”rnrn char szline[100];rn 这个 szline 好像不是常量吧??rnrnrn
stringbuffer.tostring 赋值给 string 内存溢出
StringBuffer 赋值给string的时候出现了 内存溢出,不知道该如果解决,是需要调整jvm的内存大小吗?rn还是其他什么原因,请朋友们赐教
char ** 怎么赋值给string
[code=c]rn#include rn#include rnusing namespace std;rnint main()rnrn char** pP = NULL;rn string str = 0;rn pP = (char**)calloc(128, sizeof(char*));rn for (int i = 0; i < 128; ++i)rn rn pP[i] = (char*)calloc(128, sizeof(char));rn rn pP[1000] = "ddd";rn str = pP[1000];///这里会报错rn printf("%s ", pP[1000]);rn return 0;rnrn[/code]rnrn[img=https://img-bbs.csdn.net/upload/201505/19/1432029980_880958.png][/img]rnrn以上代码去掉str = pP[1000];就正常运行可以输出dddrnrn这里怎么把pP[1000]赋值给str
string 数组赋值给datatable
如题 vs2005环境下,C#语言,我想把一个字符串数字赋值给一个Datatable,如何做?Winform下
如何将一个string写入一个stream?
如何将一个string写入一个stream?在线等待
如何将一个String转化为一个Date???
急啊rn不要用Date的Date(String s)构造函数,因为是Deprecated的rnrn比如要将一个"2003-09-25"的String变为一个Datern该怎么做?rnrn高手指点!!
如何将一个txt文件读到一个string中?
-
如何将一个string存到一个文本文件中?
-
string赋值
给string这样赋值是错误的,自己也从来没用过,只是觉着可以,知道敲了一下才发现不可以;int main() { string s,ss; cin&amp;gt;&amp;gt;ss; for(int i=0;i&amp;lt;ss.length();i++) s[i]=ss[i]; cout&amp;lt;&amp;lt;s&amp;lt;&amp;lt;endl; }正确代码:int main() ...
string的赋值
string的赋值 string s1=&quot;123456&quot;; 一:     只能在刚开始定义的时候用 (1)     从后往前赋值     string s2(s1,3);     结果:s2=&quot;456&quot; (2)     从某位置开始往后赋值     string s2(s1,0,3);     结果:s2=&quot;123&quot; (3)     连续赋值1个字符(注:是一个字符!) ...
string 的赋值
[code=C/C++]#includern#includern#includernusing namespace std; rnint main()rnrn string s,result;rn cout<<"输入一个字符串,必须含有标点符号"<>s;rn string::size_type ind = 0;rn for(string::size_type index = 0;index != s.size();++index)rn rn if(!(ispunct(s[index])))rn result[ind] = s[index];rn ind++;rn rn cout<<"去标点后的字符串是"<rn#includern#includernusing namespace std; rnint main()rnrn string s,result;rn int a=0;rn cout<<"输入一个字符串,必须含有标点符号"<>s;rn for(string::size_type index = 0;index != s.size();++index)rn rn if(ispunct(s[index]))rn a++;rn rn if(!(a>0))rn cout<<"输入有误,不含标点符号"<
在一个String
把一段代码加载变成一个字符串如string=“public class fff rnrn /**rn * @param argsrn */rn public static void main(String[] args) rn // TODO Auto-generated method stubrn public class fff rnrn /**rn * @param argsrn */rn public static void main(String[] args) rn // TODO Auto-generated method stubrn int i=0;rn dorn i++;rn while(i==5)rn System.out.println("fff");rn rn while(i>=6&&i<=10)rn System.out.println("ffff");rn rn rn rn rn while(i<=10);rn System.out.print(i);rn rn rnrnrnrn rnrnrn”怎么用代码实现在这个字符串中找出所有 do while 和while 后面的判断条件不仅针对该案例其他案例代码页要都能用rn如这个案例输出结果为rndo while rn 1.(i<=10)rnwhilern 1.(i==5)rn 2.(i>=6&&i<=10)rn这样的题目要怎么做啊大神求帮助啊
关于datagridview点击给另外String赋值的问题
比方说我有一个datagridview,然后定义一个表示单元格属性的ID(row,col),格式为String(我在点击datagridview的时候给单元格赋值rn[code=csharp]rnprivate void dgv_CellMouseClick(System.Object sender, System.Windows.Forms.DataGridViewCellMouseEventArgs e)rnrn int r = dgv.CurrentCell.RowIndex;rn int c = dgv.CurrentCell.ColumnIndex;rn rn if (r < 0 | c < 0) rn return;rn rnrn if (e.RowIndex >= 0) rn if (e.Button == MouseButtons.Left) rn dgv.Rows(r).Cells(c).Value = txt_book.Text;rnID(r, c) = txt_ID.Text.Trim; rnrn[/code]rn这个时候另外一个地方要调用这个ID(r,c)的值,很郁闷的是,每次都是当鼠标离开当前单元格的时候,才能得到这个值,怎么才能实时得到呢? 请教大家!rn
如何将一个char*赋值给一个int*?
有如下代码:rnchar* p=(str+strlen(ccc)+strlen(ddd));rn int* temp=p;//编译这一步的时候,出现错误信息:error: cannot convert `char**' to `int*' in rn initializationrn *temp=a;rnrn如何解决?
如何将一个存储过程赋值给一个临时表??
求高手写出具体代码
如何将一个字符串赋值给一个stream
如下rnstring str= "hello world" ;rnMemoryStream myStream = new MemoryStream();rn目标:rnmyStream = string;??rn
String转换到java.util.Date 另外一个方式
String dateStr = "2007-05-25 14:31:57"rn怎么将dateStr转换为java.util.Date类型?rn自己尝试的方法:rnDateFormat dateFormat = new SimpleDateFormat(rn "EEE MMM dd kk:mm:ss z yyyy",Locale.US);rndateFormat.setLenient(false);rnDate date = dateFormat.parse(dateStr);rnrnSystem.out.println("****** "+date);rn可是报出异常:rnjava.text.ParseException: Unparseable date: "2007-05-25 14:39:12"rnrnrnrn
string和c string的问题
有一个问题是这样的:rn原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成rn一个长整数。rn举例:一个ip地址为10.0.3.193rn每段数字 相对应的二进制数rn10 00001010rn0 00000000rn3 00000011rn193 11000001rn组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。rn每段可以看成是一个0-255的整数,需要对IP地址进行校验rnrn题目大概就是这个样子rnrn我写的代码如下:rnrn[code=c]rn#include rn#include rn#include rn#include rnusing namespace std;rn/* 功能:将输入的string类型的IP信息转换为string类型rn * 输入:string类型的IP信息rn * 输出:DWORD结果,正常返回解析结果值,异常时,dwIP为0rn * 返回:返回解析的整型,异常时返回"0"rn */rnstring GetValueByIP(string strIP)rnrn int index1,index2,index3,index4;rn int seg1,seg2,seg3,seg4;rn unsigned int ires = 0x0;rn string segstr1,segstr2,segstr3,segstr4,res = "0";rnrn if ( ((index1 = strIP.find('.')) == -1) ||rn ((index2 = strIP.find('.',index1 + 1)) == -1) ||rn ((index3 = strIP.find('.',index2 + 1)) == -1) ||rn ((index4 = strIP.find('.',index3 + 1)) != -1))rn rn return res;rn rnrn segstr1 = strIP.substr(0,index1);rn segstr2 = strIP.substr(index1+1,index2-index1-1);rn segstr3 = strIP.substr(index2+1,index3-index2-1);rn segstr4 = strIP.substr(index3+1,segstr4.length()-index3-1);rnrn seg1 = atoi(segstr1.c_str());rn seg2 = atoi(segstr2.c_str());rn seg3 = atoi(segstr3.c_str());rn seg4 = atoi(segstr4.c_str());rnrn if ( ((seg1 < 0) || (seg1 > 255)) ||rn ((seg2 < 0) || (seg2 > 255)) ||rn ((seg3 < 0) || (seg3 > 255)) ||rn ((seg4 < 0) || (seg4 > 255)))rn rn return res;rn rnrn ires = ((unsigned int)(seg1&0xff)<<24) | rn ((unsigned int)(seg2&0xff)<<16) | rn ((unsigned int)(seg3&0xff)<<8) | rn ((unsigned int)(seg4&0xff));rn rn itoa(ires,(char*)res.c_str(),10);rnrn return res;rnrn/* 功能:将输入的整数IP信息转换为string型IP信息,即X.X.X.X的格式rn * 输入:string类型的值rn * 输出:X.X.X.X的格式的IP信息rn * 返回:正常解析时返回非空的IP信息,异常时strIP为空值rn */rnstring GetIPByValue(string strValue)rnrn string res = "";rn unsigned int input;rn int seg1,seg2,seg3,seg4;rn input = atoi(strValue.c_str());rn if (input < 0)rn rn return res;rn rn rn seg1 = (input & 0xff000000) >> 24;rn seg2 = (input & 0x00ff0000) >> 16;rn seg3 = (input & 0x0000ff00) >> 8;rn seg4 = input & 0x000000ff;rn sprintf((char*)res.c_str(),"%d.%d.%d.%d",seg1,seg2,seg3,seg4);rn return res;rnrnint main(void)rnrn string res1,res2;rn res1 = GetIPByValue("2131393279");rn cout << res1 << endl;rn res2 = GetValueByIP("127.10.122.255");rn cout << res2 << endl;rn return 0;rnrn[/code]rnrnrn问题是:rn在两个子函数中执行结果都是对的?为什么打印出来的时候就出错了?应该怎么写?求高手指点一二!rn附加两个问题:rn1)整型如何转换成c++里的string?rn2)c中的char*如何转换成c++中的string?
怎么判断一个string是不是都是数字?
如题
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合