2012-02-28 17 views
1

C++で配列に問題があります。 私はユーザにプログラムをStringという形で与え、ユーザが満足するまでそれを続けさせたい。私の入力はうまくいきますが、文字列を配列に格納したいときには、いくつかの問題があります。私は明らかに私の配列のサイズを定義する必要がありますか? 2つまたは3つの異なるarrays(入力に応じて、いくつかのif文でソートされます)の文字列を入力してそれらを出力する方法がありますか? 私のコードは 不明なサイズの配列に文字列を追加するC++

string firstarray[10]; 
string secarray[10]; 

//The cin stuff here and reading strings from user-input 

    if(MyCondition1){ 
for(int x = 0; x<=9;x++){ 
firstarray[x] = name; 
} 

    if(MyCondition2){ 
    for(int x = 0; x<=9;x++){ 
    secarray[x] = name; 
    } 

は、配列の10-制限をスキップする方法はあります...今、このようになりますか?それは文字列のようになります

firstarray[]; 

+1

複数の配列で解決しようとしている問題は何ですか?ベクトル firstArray;サイズの制約を取り除きます。 –

+0

あなたは 'std :: string'を意味します、そうですか?私はどこにでも名前空間を使用しているとは思わない。 –

+0

よく彼はstd ::なしの文字列を使っている。 – BoBTFish

答えて

8

あなたはstd::listを探しています。または、より良い、std::vectorあなたはその位置で要素にアクセスすることができます。

両方を動的に拡張することができます。あなたの2番目の質問について

using namespace std; 

// looks like this: 
vector<string> firstvector; 

firstvector.push_back(somestring); // appends somestring to the end of the vector 

cout << firstvector[someindex]; // gets the string at position someindex 
cout << firstvector.back(); // gets the last element 


もちろんであなたの文字列を入れて複数のアレイ/ベクトルを作成することができます多分keyがために列挙することができタイプmap<key, vector<string>>std::mapを使用しています。カテゴリ(または文字列、but enum is better)。

あなたはベクターの1つに新しい価値を置く

:出力に続いて

tCategoryEnum category = eCategoryNone; 
switch(condition) 
{ 
    case MyCondition1: 
    category = eCategory1; 
    break; 
    case MyCondition2: 
    category = eCategory2; 
    break; 
    // ... 
} 
// check if a category was found: 
if(category != eCategoryNone) 
{ 
    categoryMap[category].push_back(name); 
} 

これを、あなたすることができ、単純に各カテゴリーをループとベクトル要素

for(int i = 0; i < categoryMap.size(); i++) 
    for(int j = 0; j < categoryMap[i].size(); j++) 
    cout << categoryMap[i][j]; 
5

あなたはstd::vector<string> >を使用して考えがあります?

+0

私はいくつかのgoogle-resultでそれを見つけました。しかし、私はそれが "それをやる"ことだと思った、私は間違っていたと思う。どの人がハウツーをリンクできますか? – Handsken

+1

@Handskenこれはあまりにも大変ですが、ベクターは配列よりも簡単です。マーティンの例を見て、正しい軌道に乗せてください。 – Motti

関連する問題