有什么办法可以将字符串转换为char []来做类似这样的工作吗?

问题描述:

我试图在不使用任何库函数的情况下获取字符串中的字符数。有什么办法可以将字符串转换为char []来做类似这样的工作吗?

我得到一个“数组初始化必须是一个初始化列表或文字字符串”错误。

using namespace std; 

string stringLength(string myString) { 


char string[] = myString.c_str(); 

while (string[i] != 0) { 

//code to calculate length of char string[] 

}  

int main() { 

string myString = "hello"; 

cout << stringLength(myString) << endl; 

cout << myString << endl; 

return 0; 
} 
+0

错误原因是您定义字符串的方式。 ''char string [] ='要求下一个标记是一个字符串文字('“嗨!我是一个字符串!”)或一个常量字符数组('{'H','i','!' ''''''','m','','a','','c','h','a','r','','a',' r','r','a','y','!'}') – user4581301

您还没有一个,但在您的处置两个成员函数用于确定std::string长度:size()length()。你可以只使用它们:

int main() { 
    string myString = "hello"; 
    cout << myString.length() << endl; 
    cout << myString << endl; 
    return 0; 
} 

如果你真的坚持这样做的老式ç方式,不要。但随后拔出内部字符指针的正确方法是通过两种c_str()data()

什么@Barry做的是正确的方式
但如果这是你想要什么,看看这个:

#include <string> 
#include <iostream> 

using namespace std; 

size_t stringLength(string myString) { 
    size_t count = 0; 
    const char * pstr = myString.c_str(); 
    while (pstr[count] != 0) { 
     //code to calculate length of char string[] 
     ++count; 
    } 
    return count; 
}  

int main() { 
    string myString = "hello"; 
    cout << stringLength(myString) << endl; 
    cout << myString << endl; 
    return 0; 
} 

myString.c_str()返回指向字符串的指针。

const char* str = myString.c_str(); 

int length = 0; 
while (*str != NULL) { 
length++; 
str++; 
}