c++的string类初始化问题??
发布网友
发布时间:2022-04-25 18:52
我来回答
共5个回答
热心网友
时间:2023-10-08 14:13
string str=“abc”;
实际就是调用string str("abc");并非运算符重载
c类型的字符串如"abc"实际就是char*
下面的代码就可以说明问题了
#include<stdio.h>
class String{
public:
String(char *p)
{
printf("Call String construcor\n");
}
void operator = (char *p)
{
printf("Call operator =\n");
}
};
int main()
{
String s = "abc";//输出Call String construcor
s = "abc";//输出Call operator =
return 0;
}
热心网友
时间:2023-10-08 14:13
while(cin>>str){
string *pstr = &str;
ivec.push_back(pstr);
}
这种方式中:
1、&str的值永远不会变。
2、所以pstr的值也永远不会变。
3、所以你压入容器中的永远都是同一个值。
4、输入流遇到^Z退出时,str中的数据同时也清空了。
所以输出全部是0。
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
热心网友
时间:2023-10-08 14:14
你自己都说出来了…………
string str("abc")是构造函数,string str=“abc”是重载的运算符原型好像是string & operator=(const char *);
下面这个是百度百科关于LPCSTR的说明,是指针。
http://ke.baidu.com/view/3785051.html?wtp=tt
《C++ primer》(第三版)上面有一段专门围绕着string来讲类
热心网友
时间:2023-10-08 14:14
while(cin>>str){
string *pstr = &str;
ivec.push_back(pstr);
}
这种方式中:
1、&str的值永远不会变。
2、所以pstr的值也永远不会变。
3、所以你压入容器中的永远都是同一个值。
4、输入流遇到^Z退出时,str中的数据同时也清空了。
所以输出全部是0。
热心网友
时间:2023-10-08 14:15
字符串实际上是字符数组
字符数组名代表该地址