C ++将字符串转换为char数组

时间:2012-11-12 11:37:30

标签: c++ string character-arrays

我希望有2个字符串作为输入,所以我可以使用getline(cin,s)(所以我可以选择整行直到'\n')然后我想搜索第二个数组,如果它包含单词第一个数组没有使用string::find()strstr()。 但我仍然找不到将字符串转换为数组的方法

int main()
{
    string s;
    string s2;
    char array[50];
    char array2[50];

    cout<<"Give me the first word"<<endl;
    getline(cin,s);

    cout<<"Give me the text"<<endl;
    getline(cin.s2);

    array=s;
    array2=s2;
}

我想的第二种方式是从一开始就使用数组来完成这项工作:

char array[50];
cin.getline(array,50);

但是,如果我使用直数组,有什么方法可以像字符串一样找到数组的长度?

//example
string s;
int x;

getline(cin,s);
x=line.length();

2 个答案:

答案 0 :(得分:4)

只是不要这样做,因为你不需要 来做。

您可以使用c_str()函数将std::string转换为char数组,但在您的情况下,这是不必要的。对于查找元素的情况(我认为是您需要的元素),您可以使用字符串operator[]并将其视为普通数组。

答案 1 :(得分:2)

您可以使用std::stringc_str功能的strcpy成员将数据复制到数组中:

//array=s;
strcpy(array, s.c_str());
//array2=s2;
strcpy(array2, s2.c_str());

但是,除非必须传递非常量char数组,否则不必这样做,因为std::string的外观和感觉很像字符数组,除非它们更灵活。与字符数组不同,字符串将根据需要增长到正确的大小,提供安全搜索和操作的方法,等等。