2013-11-14 199 views
0

嗨我正在爲我的班級工作,並且遇到問題。我想要做的是從文件中獲取單詞列表,然後將一個隨機單詞放到一個char數組中,但我不完全確定我應該如何將文本形式的字符串數組轉換爲字符數組我的代碼看起來是這樣的目前將字符串數組轉換爲字符數組

#include <iostream> 
#include <fstream> 
#include <string> 
#include <cstring> 
using namespace std; 

int main(){ 
    ifstream infile; 
    string words[25]; 
    string wordss; 
    char cword[]; 
    int index=0; 
    infile.open("c:\\words.txt) 
    while (infile>>words){ 
     words[index]=words; 
     index=index+1; 



    } 





} 

現在本來我得只是簡單地通過隨機選擇號碼進行cword陣列的話陣列的一個隨機字狀cword =字[0]但沒」工作。所以我想知道如何將從字符串數組中選擇的單詞轉換爲用於char數組?

+0

'char cword []'對於數組聲明是錯誤的。您必須在聲明期間指定尺寸。然後你可以說'cword = words [0] .c_str()''char cword [];''const char * cword' – theAlias

回答

0

應該使用char * cword而不是char cword [],這將允許您在爲其分配內存後僅存儲一個單詞。假設你的單詞長度是10,那麼你會寫爲 cword = new char [10];不要忘記刪除稍後由delete [] cword分配的內存;

字符串也可以做你正在做的事情,而不用轉換成char []。 例如您有: -

string cword = "Hello" 
cout<<cword[2]; // will display l 
cout<<cword[0]; // will display H 

通常的類型轉換是通過使用以下的語句2完成。

static_cast<type>(variableName); // For normal variables 
reinterpret_cast<type*>(variableName); // For pointers 

示例代碼可以是: -

ifstream infile; 
char words[25][20]; 

int index=0; 
infile.open("c:\\words.txt"); 
while (infile>>words[index]){ 
    cout<<words[index]<<endl; // display complete word 
    cout<<endl<<words[index][2]; // accessing a particular letter in the word 
    index=index+1; 

爲了寫出好代碼,我會建議你堅持只有一個數據類型。對於這個非常項目。