2016-11-19 15 views
-2

私は、アレイ内のファイルからの行を格納したい、それが文字列で行うのは簡単だ:C++:charへの文字列から*

std :: string query[100]; 

std::ifstream ifs(filename); 

if (ifs.is_open()) 
{ 
    while (getline(ifs, query[size])) 
    { 
     size++; 
    } 
} 

問題は、私は文字列を使用することはできませんよ、です。 クエリがchar *配列の場合、これを動作させるにはどうすればよいですか?

+0

'問題は、私はstrings'を使用することはできませんよ、であるべきである - 何も作成からあなたを停止しないだろう単純化された文字列クラスを使用し、その代わりに使用します。それはあなたが本当にこのような制限を妨げる方法です。 – PaulMcKenzie

+1

[std :: string to char \ *]の可能な複製(http://stackoverflow.com/questions/7352099/stdstring-to-char) –

答えて

1

簡単な方法ですが(容量は限られていますが)、バッファを割り当ててそこにデータを読み込むことです。

const int maxLength = 1024; // specify enough length 
char* query[100]; 

std::ifstream ifs(filename); 

if (ifs.is_open()) 
{ 
    while (ifs.getline(query[size] = new char[maxLength], maxLength)) 
    { 
     size++; 
    } 
    delete[] query[size]; // delete buffer where data wasn't read 
} 

範囲外のアクセスを回避するために、while文の条件が

while (size < sizeof(query)/(*query) && // size is less than number of elements in query 
    ifs.getline(query[size] = new char[maxLength], maxLength))