1

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

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;
}

编辑:只是我想捕获从键盘输入的单词、任何单词、字符串等。示例:假设我想将单词“obvious”添加到向量中,以便以后可以操作向量。所以我输入“obvious”,然后按回车键,然后就可以了,我有一个大小为 7 的向量,其中包含“obvious”一词。

4

2 回答 2

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());
于 2012-11-25T17:08:57.917 回答
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>增长到必要的大小。

于 2012-11-25T17:10:37.670 回答