永发信息网

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

答案:5  悬赏:10  手机版
解决时间 2021-02-22 13:39
  • 提问者网友:沦陷
  • 2021-02-21 19:59
为什么 int i=strlen(st)会报错?
最佳答案
  • 五星知识达人网友:雾月
  • 2021-02-21 21:24
错误原因在于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);
全部回答
  • 1楼网友:雪起风沙痕
  • 2021-02-21 23:47
把代码贴出来!追问
,,,为什么呢,,,追答i = strlen(str.c_str());
如果还报错!则把头文件改成#include
  • 2楼网友:鱼忧
  • 2021-02-21 23:26
是不是没有加头文件#include
若不是,还需要你具体说下报错信息
  • 3楼网友:玩家
  • 2021-02-21 22:30
使用某个函数之前:
1,这是一个库函数,必须包含库#include
2,他的参数,是char*,即地址。
3,他的返回值。
  • 4楼网友:玩家
  • 2021-02-21 21:43
[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)),也不是一个指针,所以不能这么传参数。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯