如何收集多个字符串并将它们输入到数组中

时间:2016-10-25 04:11:43

标签: c++ arrays string

在c ++中,我是否可以创建一个循环,要求用户输入信息,然后循环回询问他们是否愿意继续添加信息,直到他们不这样做。并将他们输入的值存储到数组的不同部分?

我一直试图使用while循环,但是会发生什么,如果他们想要添加信息会提示,他们选择是,他们添加它,如果不是,它会将他们输入的内容输入终端,但是如果我这样做的话是两次,我只是覆盖第一个值,任何方法来纠正这个?我对编程很陌生,感谢任何帮助,谢谢你。 (我所拥有的只是一个模板,我知道为什么它不起作用,我也遗漏了预处理器指令

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

int main()

{

    string add;

    string name [100];

    while (true)
    {
        cout <<"Would you like to add a name? Yes or No? \n";
        getline(cin, add);
        if  (add == "yes" or add == "Yes")
            {
                cout<<"Enter a name\n";
                getline(cin, name); 
            }
        else if( add == "no" or add == "No")
            {break;}
        else
        {
            cout <<"sorry, that is not a valid response"<<endl<<endl;
        }
    }
    cout<<name;
    return 0;
}

我认为尝试使用指针可能会起作用,但它们让我感到困惑哈哈。非常感谢任何帮助或建议,谢谢。

2 个答案:

答案 0 :(得分:0)

在存储此类信息时使用带有索引的数组名称而不是变量名称

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

int main()

{

    string add;

    string name [100];

    int index = 0; //Index Location of Array

    while (true)
    {
        cout <<"Would you like to add a name? Yes or No? \n";
        getline(cin, add);
        if  (add == "yes" or add == "Yes")
            {
                cout<<"Enter a name\n";
                getline(cin, name[index]); // write name with index to insert value in particular index
            }
        else if( add == "no" or add == "No")
            {break;}
        else
        {
            cout <<"sorry, that is not a valid response"<<endl<<endl;
        }
    }

    //loop here to output all value of name as mention above
    cout<<name;

    return 0;
}

答案 1 :(得分:0)

使用std :: vector可以让您的生活更轻松。请参阅代码段:

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main()
{
string add;
string name;
vector<string> names;

while (true)
{
    cout <<"Would you like to add a name? Yes or No? \n";
    getline(cin, add);

    if  (add == "yes" or add == "Yes")
        {
            cout<<"Enter a name\n";
            getline(cin, name); 
            names.push_back(name);
        }
    else if( add == "no" or add == "No")
        {
          break;
         }
    else
    {
        cout <<"sorry, that is not a valid response"<<endl <<endl;
    }
}

// printing contents
for(auto n:names)
   cout << *n <<endl; 
return 0;
}