-3

我想将 chars 数组中的单词复制到向量字符串中。我编写了以下代码,它给了我错误,即未在此范围内声明字符串、向量、单词,并且我在头文件中声明了函数你可以帮助??

这是代码:

vector<string> split(char sentence[])
{
    vector<string> ans(100);
    int count=0;
    for(unsigned int i=0;i<sentence.size();i++)
    {
    if(sentence[i]==' ')
        count=count+1;
    ans[count]=ans[count]+sentence[i];
    }
    return ans;
}
4

3 回答 3

3

Achar[]是原始类型,没有成员函数,例如没有.size()...

你确定你知道你在做什么吗?这一点,以及缺少标题(Luchian 已经评论过)给人的印象是你没有,真的......

于 2012-10-29T14:52:02.360 回答
0

您需要包含标题<vector><string>限定使用 withstd::或 useusing指令。应优先考虑全名资格:

std::string
std::vector

编辑:我没有注意到char*::size错误,因为我专注于您发布的错误消息(“未在此范围内声明”)。有些人认为这值得一票否决......无论如何。

于 2012-10-29T14:50:59.570 回答
0

你真的应该只使用内置库或其他东西,并用正则表达式拆分字符串。

而不是使用 achar[]使用 a string。它很容易转换char[]成那个,而且它可能是一个字符串开头,所以你应该早点把它剪掉。

要形成你的vector<string>,你所要做的就是:

#include <regex.h>
#include <string.h>
#include <vector.h>

using namespace std;

vector<string> split(string s){
    regex r ("\\w+"); //regex matches whole words, (greedy, so no fragment words)
    regex_iterator<string::iterator> rit ( s.begin(), s.end(), r );
    regex_iterator<string::iterator> rend; //iterators to iterate thru words
    vector<string> result<regex_iterator>(rit, rend);
    return result;  //iterates through the matches to fill the vector
}

这可能需要解决一两个错误(我只是有点生疏),并且还可以使用内联语句大大压缩。

记住:c++ 的魔力有两种形式:迭代器和内联语句。

于 2012-10-29T15:51:52.503 回答