我想将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;
}
答案 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 ++的神奇之处在于两种形式:迭代器和内联语句。