C++字符数组与向量串

C++字符数组与向量串,c++,arrays,string,char,C++,Arrays,String,Char,我想把chars数组中的单词复制到vector字符串。我写了下面的代码,它给了我错误,字符串,vector,单词没有在这个范围内声明,我在头文件中声明了函数。你能帮我吗 代码如下: vector<string> split(char sentence[]) { vector<string> ans(100); int count=0; for(unsigned int i=0;i<sentence.size();i++) {

我想把chars数组中的单词复制到vector字符串。我写了下面的代码,它给了我错误,字符串,vector,单词没有在这个范围内声明,我在头文件中声明了函数。你能帮我吗

代码如下:

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;
}

您需要包含标题并使用std::或use-using指令限定用法。应优先考虑全名资格:

std::string
std::vector
编辑:我没有注意到char*::size错误,因为我关注的是您发布的错误消息没有在此范围内声明。有些人认为这应该被否决。。。无论如何。

字符[]是一种基本类型,没有成员函数,例如没有.size之类的函数


你确定你知道你在做什么吗?这一点,加上Luchian已经评论过的标题缺失,给人的印象是,你真的不…

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

使用字符串代替char[]。将char[]转换为它很容易,而且它可能是一个字符串,所以您应该更早地删除它

要形成向量,只需执行以下操作:

#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
}
这可能需要解决一两个bug,因为我只是有点生疏,还可以使用内联语句进行压缩


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

@ avkar,它给了我错误,字符串、向量、单词在这个范围内没有声明,所以我错过了一个。只是对于记录,我没有投票。注意,原始类型char []在代码中没有用。参数的实际类型是char*@korradrudolph:实际上,我的语言律师不同意这一点,因为它被声明为char[]。最后,这在问题的上下文中没有什么区别。你可能更正确,我可能更容易理解,但无论如何,句子的类型是char*,而不是char[]。你是说char[]没有size成员,但这在技术上是不相关的。Konrad和avakar是正确的-句子类型是char*。我只知道将数组作为参数传递的实际含义,例如,不能再使用sizeof来确定其长度,而不是它实际上意味着类型更改。向量和字符串通常位于std命名空间中。