如何使用键盘输入填充C ++向量?

时间:2012-11-25 17:07:32

标签: c++ vector user-input

诀窍在于我还不知道字符串的大小。我需要能够向用户询问一个单词,并且这个单词将存储在一个向量中。

int main()
{

    vector<char> word (80);

    // get the word from user
    for(int i=0 ; getchar() != '\n' ; i++)
        {
            cin >> word[i];
        }
    // print the word from user
    for(int i=0 ; i<=word.size() ; i++)
        {
            cout << word[i] << endl;
        }


    return 0;
}

编辑:这只是我想从键盘捕获一个单词输入,任何单词,一串字符等等。例如:假设我想添加“明显”这个词到一个向量,以便我以后可以操纵向量。所以我输入“明显的”,然后按回车键,然后你去,我有一个大小为7的矢量,里面有“明显的”字样。

2 个答案:

答案 0 :(得分:2)

std::string str;

// I'm confused about whether you want a line, or a word.
// this gets a line
std::getline(std::cin, str);

// this gets a word
// std::cin >> str;

vector<char> word(str.begin(), str.end());

答案 1 :(得分:0)

我认为这个问题经常被问到和回答。显而易见的方法是

std::vector<char> word{std::istreambuf_iterator<char>(std::cin),
                       std::istreambuf_iterator<char>()};

...或者用C ++ 2003编译的同等版本,但经过调整以避免最令人烦恼的解析。

如果您只想阅读部分输入,例如只需一行,则需要稍微调整一下:

for (std::istreambuf_iterator<char> it(std::cin), end;
     it != end && *it != '\n'; ++it)
{
    word.push_back(*it);
}
++it;

任何一种情况下的关键是让std::vector<char>增长到必要的大小。