2012-11-12 40 views
3

我想有2個字符串作爲輸入,所以我可以使用getline(cin,s)(所以我可以選擇整行,直到'\n'),然後我想搜索第二個數組,如果它包含第一個字陣列而不使用string::find()strstr()。 但我仍然無法找到一種方法,要麼將字符串轉換爲數組C++將字符串轉換爲字符陣列

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

您可以使用std::stringstrcpy功能c_str成員將數據複製到陣列:

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

但是,你沒有這樣做,除非你必須通過非恆char數組,因爲std::string的外觀和感覺非常像字符數組,除非它們更靈活。與字符數組不同,字符串將根據需要增長到合適的大小,提供安全搜索和操作的方法等。

4

只是不這樣做,因爲你不需要需要來做到這一點。

您可以使用c_str()函數將std::string轉換爲char數組,但在您的情況下它只是不必要的。對於查找元素(我相信是你需要的)的情況,你可以使用字符串的operator[],並把它看作是普通數組。

+0

你不必處理'c_str'返回的內存。 –

+0

@R,是的,我的不好,它返回一個'const char *'...我會編輯答案。 – SingerOfTheFall