c++ - 无法将字符串转换为 const char

标签 c++ string char strlen

我有这个函数,编译器对我大喊“无法将字符串转换为常量字符”。

void 
DramaticLetters(string s, short TimeLength)
{
    for(int i = 0, sLen = strlen(s); i < sLen; i++){
        cout << s[i];
        Sleep(TimeLength);
    }
}

我觉得strlen有问题

最佳答案

strlen() 用于 C const char* 字符串。要获取字符串 s 的长度,请使用 s.size()s.length()。如果要从 string 获取 C 字符串,请使用 s.c_str()

虽然 C++ 使 似乎 const char*string 可以互换,但在转换 const char 时只有一种方式*string

您也没有理由要使用 strlenstrlen 很可能是用循环定义的,它永远不会像 size() 那样高效,后者最有可能只是 的 length 属性的 getter字符串类。仅在调用没有 C++ 替代项的 C 函数时将 string 转换为 C 字符串。

关于c++ - 无法将字符串转换为 const char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11970803/

相关文章:

c++ - 从 ini 文件中读取十六进制字符

c - 通过引用传递字符串数组以在 C 中运行和修改内容

c++ - 加法和减法不适用于 Armadillo 稀疏矩阵

c++ - &p[0] 与 boost::scoped_array 中的 p.get() 的性能影响

c++ - 重新声明为另一种符号错误(c++)

c - 如何在 C 中比较两个不区分大小写的字符?

ios - Swift:方法不知道它接受一个字符串

c# - 如何将常量字符串引用传递给函数

c# - 从单词和数字中提取值

c++ - 使用 boost 属性树解析 XML