诀窍在于我还不知道字符串的大小。我需要能够向用户请求一个单词,并且这个单词将存储在一个向量中。
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编译的等效版本,但经过调整以避免Most Vexing Parse。
如果你只想读取部分输入,例如,只读取一行,你需要稍微调整一下:
for (std::istreambuf_iterator<char> it(std::cin), end;
it != end && *it != 'n'; ++it)
{
word.push_back(*it);
}
++it;
无论哪种情况,关键都是让std::vector<char>
增长到必要的大小。