C ++ char数组和向量字符串

时间:2012-10-29 14:49:59

标签: c++ arrays string char

我想将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;
}

3 个答案:

答案 0 :(得分:3)

char[]是基本类型,没有成员函数,例如.size() ......

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

答案 1 :(得分:0)

您需要添加标题<vector><string>,并使用std::或使用using指令限定使用。应优先考虑全名资格:

std::string
std::vector

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

答案 2 :(得分:0)

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

而不是使用char[]使用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 ++的神奇之处在于两种形式:迭代器和内联语句。