有没有办法将字符串转换为char []来制作像这样的工作?

时间:2015-11-06 01:52:58

标签: c++ string char initializer

我试图在不使用任何库函数的情况下获取字符串中的字符数。

我得到" 数组初始值设定项必须是初始化列表或文字字符串"错误。

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;
}

3 个答案:

答案 0 :(得分:2)

您可以使用一个而非两个成员函数来确定std::string的长度:size()length()。你可以使用它们:

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

如果你真的,真的坚持用老式的C方式做,不要。但是,提取内部字符指针的正确方法是通过c_str()data()

答案 1 :(得分:0)

@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;
}

答案 2 :(得分:0)

myString.c_str()返回指向string的指针。

const char* str = myString.c_str();

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