如何将空格分隔的一堆单词读成数组?
说我有这句话:
“我喜欢青蛙”
这个数组:
string mySentenceArray[2]
我想制作
mySentenceArray[0] = I
mySentenceArray[1] = like
mySentenceArray[2] = frogs
仅作为一个例子。 (请没有人告诉我硬编码我刚写的句子,这是一个例子。)
答案 0 :(得分:0)
您可以将字符串转换为一系列标记,并将这些标记放入数组中。考虑一下:http://www.cplusplus.com/reference/clibrary/cstring/strtok/
答案 1 :(得分:0)
有几种方法:
使用strtok。但它是C函数,而不是C ++。混合使用C和C ++是一种糟糕的风格。此外,strtok
函数不是线程安全的。
使用任何std::string::find方法。这很复杂。
使用std::stringstream课程。它需要太多步骤。
使用boost::algorithm::string::split。我更喜欢这种方式。它简单而快速。
答案 2 :(得分:0)
除非我有其他用途来证明添加额外的库,我可能只是使用stringstream
:
std::istringstream buffer("I like frogs");
std::vector<std::string> words((std::istream_iterator<std::string>(buffer)),
std::istream_iterator<std::string>());
std::copy(words.begin(), words.end(),
std::ostream_iterator<std::string>(std::cout, "\n"));
答案 3 :(得分:0)
仅使用标准库:
istringstream sentence("I like frogs");
vector<string> words(
(istream_iterator<string>(sentence)),
(istream_iterator<string>()));
请注意,至少有一个构造函数参数实际上需要看似不必要的括号,否则您将被most vexing parse烦恼。
或者,Boost提供了一些useful string algorithms,包括split
:
string sentence("I like frogs");
vector<string> words;
boost::algorithm::split(words, sentence, boost::algorithm::is_space());