【发布时间】:2015-09-09 19:43:27
【问题描述】:
我已将 c++ 转换为 c 类型字符串并使用 strlen,但它不工作。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s("Hello");
s.c_str();
cout<<strlen(s);
}
【问题讨论】:
-
调用
s.c_str()不会将std::string转换为“c 类型字符串”。它返回指向您忽略的std::string中保存的字符串的指针。因此,该声明本质上是无操作的。试试:std::cout << strlen(s.c_str ())或者,更好的是,std::cout << s.size() -
这一行
s.c_str();什么都不做。 -
它.....不起作用?这是一个相当模糊的错误报告。它应该做什么?它实际上在做什么?
-
恭喜!您刚刚包含了整个标准库并将其全部拉入全局命名空间。我看不出这与任何不平凡的事情都能很好地合作。解释一下:
#include<bits/stdc++.h>这包括整个该死的标准库或足够接近以至于没有区别。这是很多额外的编译。using namespace std;使 std 命名空间中的所有内容都是全局的。您正在用两行代码让自己陷入巨大的神秘错误噩梦。不要对自己这样做。 -
@user4581301 我们最近有一个meme :-D ...