C++ 如何按空格循环字符串?如何知道字符串中当前所在单词的索引号?
我写的这段代码通过一个字符串逐字符循环。我想要的是逐字遍历字符串。这是我的密码C++ 如何按空格循环字符串?如何知道字符串中当前所在单词的索引号?,c++,string,C++,String,我写的这段代码通过一个字符串逐字符循环。我想要的是逐字遍历字符串。这是我的密码 string a; // already declared // c is string array for (i=0;i<b;i++) { if (strcmp (c[i],a[i]) == 0 ) { // do something } } 字符串a;//已经宣布 //c是字符串数组 对于(i=0;i您可以使用字符串流: string a = "hello
string a; // already declared
// c is string array
for (i=0;i<b;i++) {
if (strcmp (c[i],a[i]) == 0 ) {
// do something
}
}
字符串a;//已经宣布
//c是字符串数组
对于(i=0;i您可以使用字符串流:
string a = "hello my name is joe";
stringstream s(a);
string word;
// vector<string> c = ... ;
for (int i = 0; s >> word; i++)
{
if (word == c[i])
{
// do something
}
}
string a=“你好,我叫乔”;
(一);
字符串字;
//向量c=;
对于(int i=0;s>>word;i++)
{
if(word==c[i])
{
//做点什么
}
}
如果您希望能够在单词中前后移动,则应将它们存储在数组中,因此第二段代码对这一点很有用:
string a = "hello my name is joe";
vector<string> c = {"hello","my","name","is","joe"};
string word;
vector<string> words;
for (stringstream s(a); s >> word; )
words.push_back(word);
for (int i=0; i<words.size(); i++)
{
if (words[i] == c[i])
{
// do something
}
}
string a=“你好,我叫乔”;
向量c={“你好”、“我的”、“名字”、“是”、“乔”};
字符串字;
向量词;
用于(字符串流s(a);s>>word;)
单词。推回(单词);
对于(int i=0;i检查:
#include <stdio.h>
#include <iostream>
using namespace std;
void sort(int *,int);
int word_size(char * in, int length)
{
int size = 0;
if(!strcmp(in,""))
size = 1;
for(int i =0 ;i<length;i++)
{
if(in[i] == ' ')
size ++;
}
return size;
}
int get_word_size(char * in,int length, int index)
{
int word_num = 0;
int size = 0;
for(int i = 0;i<length;i++)
{
if(in[i] == ' ')
word_num++;
else if(word_num == index)
{
size++;
}
}
return size;
}
char * get_word(char * in,int length,int index)
{
char * result = new char[get_word_size(in,length,index)];
int k = 0;
int word_num = 0;
for(int i = 0;i<length;i++)
{
if(in[i] == ' ')
word_num++;
else if(word_num == index)
{
result[k] = in[i];
k++;
}
}
return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
char * x = "Hello this is my name";
char * y = "byebye that was your name";
char * outChar = get_word(x,21,3);
outChar[get_word_size(x,21,2)] = '\0';
cout << outChar;
int a;
cin>>a;
return 0;
}
#包括
#包括
使用名称空间std;
无效排序(int*,int);
整数字大小(字符*英寸,整数长度)
{
int size=0;
如果(!strcmp(以“.”号填列)
尺寸=1;
对于(int i=0;i您不需要strcmp
来比较字符。只需使用c[i]==a[i]
。我想比较字符串而不是字符,这就是为什么我想一个字一个字地循环整个字符串。@M M。在比较期间,我如何获得我所在的单词的索引号?保持计数并在每次循环中递增它iteration@Frontenderman如果我想迭代回字符串中的某个位置呢?那可能有点棘手。你能说得更具体一点吗?如果你想一致地返回到特定的单词,那么你可能想将每个单词保存在一个数组中。@Frontenderman我可能想返回的单词将是完全随机的(取决于用户输入的字符串和各种其他条件)而且我可能只把索引号作为参考。字符串中的单词不是唯一的,所以我不能去比较这个词然后再返回它。这个讨厌的东西是什么?当然不是惯用的C++。