Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何按空格循环字符串?如何知道字符串中当前所在单词的索引号?_C++_String - Fatal编程技术网

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++。