诀窍在于我还不知道字符串的大小。我需要能够向用户询问一个单词,并且这个单词将存储在一个向量中。
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的矢量,里面有“明显的”字样。
答案 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>
增长到必要的大小。