字符串字符迭代器 刚刚返回到C++编程。 我得到的错误是:
发送的成员begin in请求为非类类型char[30] 发送的成员结束请求为非类类型char[30]字符串字符迭代器 刚刚返回到C++编程。 我得到的错误是:,c++,iterator,C++,Iterator,发送的成员begin in请求为非类类型char[30] 发送的成员结束请求为非类类型char[30] char sent[]=“需要将此shiat分解”; for(vector::iterator it=sent.begin();it!=sent.end();++it){ 如果(*it==“”) cout您发送的变量不是vector类型,而是char[] 但是,for循环尝试在字符串的向量上迭代 对于普通数组,请使用C迭代: int len = strlen(sent); for (int
char sent[]=“需要将此shiat分解”;
for(vector::iterator it=sent.begin();it!=sent.end();++it){
如果(*it==“”)
cout您发送的变量不是vector
类型,而是char[]
但是,for循环尝试在字符串的向量上迭代
对于普通数组,请使用C迭代:
int len = strlen(sent);
for (int i = 0; i < len; i++)
int len=strlen(已发送);
对于(int i=0;i
使用string
而不是char[]
string sent = "need to break this shiat down";
for(string::iterator it=sent.begin(); it!=sent.end(); ++it){
if(*it == ' ')
cout << "\n";
else
cout << *it << endl;
}
string sent=“需要将此shiat分解”;
for(string::iterator it=sent.begin();it!=sent.end();++it){
如果(*it=='')
cout在其他答案中指出,您迭代的类型错误。您应该将sent
定义为std::string
类型,并使用std::string::begin()
和std::string::end()
进行迭代,或者,如果您支持C++11,您可以使用一些选项轻松迭代固定大小的数组。您可以使用std::begin
和std::end`:
char sent[] = "need to break this shiat down";
for(char* it = std::begin(sent); it != std::end(sent); ++it){
if(*it == ' ')
std::cout << "\n";
else
std::cout << *it << "\n";
}
char sent[]=“需要将此shiat分解”;
for(char*it=std::begin(sent);it!=std::end(sent);+it){
如果(*it=='')
std::coutchar sent[]
不是std::string
而是string literal,但在这种情况下,您可以对其进行迭代:
int main() {
char sent[] = "need to break this shiat down";
for(auto it = std::begin(sent); it!=std::end(sent) - 1; ++it){
if(*it == ' ')
cout << "\n";
else
cout << *it << endl;
}
}
如果此时不知道大小的字符串文字-请使用strlen而不是sizeof…您也可以使用流式处理来抛出空白并插入换行符
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
stringstream ss("need to break this shiat down.", ios_base::in);
string s;
while (ss >> s)
cout << s << endl;
return EXIT_SUCCESS;
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
stringstream ss(“需要将此shiat分解。”,ios_base::in);
字符串s;
while(ss>>s)
cout错误的var声明,应为char[]sent=“需要分解此shiat down”@imulsion声明正确。看起来是在“”上拆分(空格)的最简单解决方案。
int main() {
char sent[] = "need to break this shiat down";
for(auto it = std::begin(sent); it!=std::end(sent) - 1; ++it){
if(*it == ' ')
cout << "\n";
else
cout << *it << endl;
}
}
int main() {
char sent[] = "need to break this shiat down";
for(char* it = sent; it!=sent+sizeof(sent) - 1; ++it){
if(*it == ' ')
cout << "\n";
else
cout << *it << endl;
}
}
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
stringstream ss("need to break this shiat down.", ios_base::in);
string s;
while (ss >> s)
cout << s << endl;
return EXIT_SUCCESS;
}