永发信息网

为什么 int i=strlen(st)会报错?

答案:5  悬赏:10  手机版
解决时间 2021-02-22 13:39
为什么 int i=strlen(st)会报错?
最佳答案
错误原因在于st是一个std::string类型的变量,而strlen要求的参数是char*类型的
  如果要获取st字符串的长度,std::string自带一个size接口可以满足需求
  如果仍要继续使用strlen,则可以使用std::string的c_str接口。该接口返回一个const char*指针,正好可以作为参数传递给strlen
  示例代码如下:

std::string st;
cin>>st;
int i = st.size();
printf("str size is:%d
",i);
i = strlen(st.c_str());
printf("str size is:%d(by strlen)
",i);
全部回答
把代码贴出来!追问
,,,为什么呢,,,追答i = strlen(str.c_str());
如果还报错!则把头文件改成#include
是不是没有加头文件#include
若不是,还需要你具体说下报错信息
使用某个函数之前:
1,这是一个库函数,必须包含库#include
2,他的参数,是char*,即地址。
3,他的返回值。
[Error] cannot convert 'std::string {aka std::basic_string}' to 'const char*' for argument'1' to 'size_t strlen[const char*]'
错误提示不是说的很清楚了吗? 传参格式不对
因为你的st是一个类,而不是字符串数组,就像你定义一个结构变量struct name bb; bb只是一个结构变量,而不是char *类型(因为strlen函数的原型为size_t strlen(const char *string)),也不是一个指针,所以不能这么传参数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
x+1/3-x-1=2x-3/2-x-2/4
我在上海大众4S店见习,听到有些司机说在市区
河南中医药大学东明校区西门怎么去啊,有知道
雅方亚发艺地址在什么地方,我要处理点事!
我的手机屏幕我没碰,他自己就动了,这是怎么
海信商用收款机hk913a多少钱
伤寒第一次菌血症相当于临床上的哪一期A.潜伏
白墙白门黑灰花静电视墙黑配米色沙发配金香槟
求大神发个64位的 res bxgprs.dll 谢谢
医用烤灯哪个牌子好
京竹坨地址在哪,我要去那里办事
宝宝的前囟门最迟什么时间闭合
是不是有一种说话就是打一胎不如生三胎
做鱼丸需要加什么添加剂吃起来才Q弹求答案谢
易经说下雨搬家好不好
推荐资讯
颈动脉挤压过长时间会使人死亡吗
下列影响股价的因素中,属于宏观经济与政策因
种群数量增长可能呈(J)型曲线增长(如下图
亿客隆超市在什么地方啊,我要过去处理事情
决定性同义词
我每次,在学校晚修,和在家写作业时,都不知
“将大金字塔的自重乘以十的十五次方,正好是
某公司拟发行债券,面值1000元,票面利率8%,
山水旅行社万鑫营业部这个地址在什么地方,我
消防水池定期清理是哪个标准提出的要求
请问蜡笔小新2010剧场版 小新和久美子骑摩托
婺源李坑舒心客栈地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?