繁体   English   中英

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

[英]How do I fill a C++ vector with input from keyboard?

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

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的矢量,里面有“明显的”字样。

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());

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

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>增长到必要的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM