2012-10-21 79 views
3

說我得到用戶輸入。如果他們輸入的數據不在數組中(我如何檢查數組?),將它添加到數組中。 反之亦然如何從給定用戶輸入的數組中刪除某些東西。如何添加用戶輸入到數組或刪除它? C++

例子:

string teams[] = {"St. Louis,","Dallas","Chicago,","Atlanta,"}; 

cout <<"What is the name of the city you want to add?" << endl; 
    cin >> add_city; 

cout <<"What is the name of the city you want to remove?" << endl; 
    cin >> remove_city; 
+0

你在''''''數組中有一些額外的逗號。另外,如下所述,使用'[]'不會使數組可變長度;它使得它的長度取決於初始化列表的長度,在這種情況下。4.從這一點開始,它與固定長度數組相同。 'std :: vector'就是你真正想要的東西。 –

+0

評論是有意的。我正在學習數組,並只告訴使用數組... – user1756669

+0

我說*逗號*沒有評論。例如。 '「聖路易斯」,''應該''聖路易斯''。 –

回答

0

使用一個數組,你可以用char *來處理空的數組單元格,比如「EMPTY」。要查找通過數組搜索的項目,並找到「替換」或添加它。

const char * Empty = "EMPTY"; 
cout << "Please enter a city you want to add:" 
cin >> city; 
for(int i = 0; i < Arr_Size; i++) //variable to represent size of array 
{ 
    if(Arr[i] == Empty) //check for any empty cells you want to add 
    { 
     //replace cell 
    } 
    else if(i == Arr_Size-1) //if on last loop 
     cout << "Could not find empty cell, sorry!"; 
} 

作爲去除細胞:

cout << "Please enter the name of the city you would like to remove: "; 
cin >> CityRemove; 

for(int i = 0; i < Arr_Size; i++) 
{ 
    if(Arr[i] == CityRemove) 
    { 
     Arr[i] = Empty;    //previous constant to represent your "empty" cell 
    } 
    else if(i == Arr_Size - 1) //on last loop, tell the user you could not find it. 
    { 
     cout << "Could not find the city to remove, sorry!"; 
    } 
} 

打印陣列而跳過 '空' 細胞 //打印陣列

for(int i = 0; i < Arr_Size; i++) 
{ 
    if(Arr[i] != Empty)    //if the cell isnt 'empty' 
    { 
     cout << Arr[i] << endl; 
    } 
} 

但我不使用載體同意將是一個更有效的方法,這只是一個創造性的方法來讓你的思維得到啓發。

+0

爲什麼不使用零長度字符串,即''「'? –

+0

編輯帖子以顯示我的意圖,打印時跳過「空」單元格。 –

+0

它看起來像我已經宣佈'Arr'爲'std :: vector Arr;'......你應該證明這一點。 'string Arr []'不起作用,因爲沒有內置數組的'size'方法。 –

0

添加信息到一個數組,你可以做這樣的事情:

for (int i = 0; i < 10; i++) 
{ 
    std::cout << "Please enter the city's name: " << std::endl; 
    std::getline(cin, myArray[i]); 
} 

我不知道你從一個陣列刪除的東西是什麼意思。你想設置元素的值爲0,這會導致類似於{「城市1」,「城市2」,0,「城市3」)或者你想從數組中移除它並移動其他元素填充它的空間,這將導致類似於{「城市1」,「城市2」,「城市3」}的東西}

+0

這是一個'string'數組,而不是'const char *',所以我不確定在初始值設定項列表中是否有空值。 –

4

內置數組的大小是不變的:您既不能刪除元素,也不能我會建議使用std::vector<std::string>,而不是:添加元素到std::vector<T>可以,例如,可以使用push_back()。要刪除一個元素,您將找到一個元素,例如,使用std::find(),然後使用erase()刪除。

如果您需要使用內置陣列(雖然我沒有看到任何好的r eason),你會使用new std::string[size]在堆上分配一個數組並保持其大小,並在適當的時候使用delete[] array;適當地釋放內存。

+1

+1。如果您希望事物在任何地方都是動態的,矢量絕對是您的選擇。 – Archimaredes

相關問題