c ++在动态数组中解析getline

moh*_*ium 2 c++ foreach dynamic-arrays

我已经问过,我如何将流中的单个单词解析为变量,并且完美无缺,但我不知道用户将输入多少单词.我以为我可以把它解析成动态数组,但我不知道从哪里开始.我如何写"为每个单词排队"?

这就是我将这些单词解析为变量的方法:

string line;
getline( cin, line );
istringstream parse( line );
string first, second, third;
parse >> first >> second >> third;
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:感谢大家,我想我知道了...它的确有效!

Att*_*ila 5

您可以使用std::vector<std::string>std::list<std::string>- 它们自动处理调整大小.

istringstream parse( line ); 
vector<string> v;
string data; 
while (parse >> data) {
  v.push_back(data);
}
Run Code Online (Sandbox Code Playgroud)


hmj*_*mjd 5

可能的用途std::vectoristream_iterator:

#include <iostream>
#include <sstream>
#include <vector>
#include <iterator>
#include <algorithm>

int main()
{
    std::istringstream in(std::string("a line from file"));

    std::vector<std::string> words;
    std::copy(std::istream_iterator<std::string>(in),
              std::istream_iterator<std::string>(),
              std::back_inserter(words));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

vector为需要存储的任何单词的数量是由用户提供将增长.