3

我想有 2 个字符串作为输入,这样我就可以使用getline(cin,s)(所以我可以选择整行直到'\n')然后我想搜索第二个数组,如果它包含第一个数组的单词而不使用string::find()or 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();
4

2 回答 2

4

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

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

于 2012-11-12T11:40:14.980 回答
3

您可以使用and函数c_str的成员将数据复制到数组中:std::stringstrcpy

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

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

于 2012-11-12T11:39:07.563 回答