为什么C++里string类数组不能使用strlen???
#include<iostream>#include<string.h>#include<string>usingnamespacestd;voidmain(){stri...
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
void main()
{
string str1;
//cin>>str1>>endl;
getline(cin,str1);
char *str2="abc";
cout<<"str1:"<<str1<<endl;
//cout<<"str1:"<<str1<<strlen(str1)<<endl;
cout<<"str2:"<<str2<<strlen(str2)<<endl;
system("pause");
}
第二句输出str1的长度错误 展开
#include <string.h>
#include <string>
using namespace std;
void main()
{
string str1;
//cin>>str1>>endl;
getline(cin,str1);
char *str2="abc";
cout<<"str1:"<<str1<<endl;
//cout<<"str1:"<<str1<<strlen(str1)<<endl;
cout<<"str2:"<<str2<<strlen(str2)<<endl;
system("pause");
}
第二句输出str1的长度错误 展开
1个回答
展开全部
//cout<<"str1:"<<str1<<strlen(str1)<<endl;
修改成这样
//cout<<"str1:"<<str1<<strlen(str1.c_str())<<endl;
试试。
strlen接受的参数是char *,string是c++中的一个类。可以使用.size()获得其长度
修改成这样
//cout<<"str1:"<<str1<<strlen(str1.c_str())<<endl;
试试。
strlen接受的参数是char *,string是c++中的一个类。可以使用.size()获得其长度
追问
恩。这个是有用的,不过.c_str()是什么意思呢?从哪个类来的呢?表示将string类的数组转换为char*类型的数组么?而且我用sizeof(str1)获得的整数值都是32是怎么回事呢?
追答
string是一个类,.c_str()是其一个成员函数,表示将string转换成char数组,
str1表示的字符串的首地址,相当于指针,也就是4个字节,32位二进制位。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询