C++字符数组与向量串
我想把chars数组中的单词复制到vector字符串。我写了下面的代码,它给了我错误,字符串,vector,单词没有在这个范围内声明,我在头文件中声明了函数。你能帮我吗 代码如下: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++) {
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命名空间中。