C++分裂与Fuffar数组

C++分裂与Fuffar数组,c++,arrays,string,C++,Arrays,String,如何使用字符串拆分并匹配每个元素? 我在Ubuntu上使用gcc版本4.6.3 我的伪代码: #include <stdio.h> #include <string.h> #include <iostream> using namespace std; int main () { char str[] = "foo,bar"; char * pch; pch = strtok (str,","); for (int i =

如何使用字符串拆分并匹配每个元素? 我在Ubuntu上使用gcc版本4.6.3

我的伪代码:

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;

int main () {
    char str[] = "foo,bar";
    char * pch;
    pch = strtok (str,",");

    for (int i = 0; i < str.size(); ++i) {
       if( pch[i] == "something" ) {
          cout << pch[i] << "\r\n";
       }
   }
}
例如,谢谢你

#include <iostream>
#include <cstring>

int main() 
{
    char str[] = "foo,something,bar";

    char *p = std::strtok( str, "," );
    while ( p )
    {
        if ( std::strcmp( p, "something" ) == 0 ) std::cout << p << std::endl;
        p = std::strtok( NULL, "," );
    }

    return 0;
}
#include <iostream>
#include <sstream>

int main() 
{
    char str[] = "foo,something,bar";
    std::istringstream is( str );
    std::string word;

    while ( std::getline( is, word, ',' ) )
    {
        if ( word == "something" ) std::cout << word << std::endl;
    }

    return 0;
}
另一种方法是使用类std::string和std::istringstream。比如说

#include <iostream>
#include <cstring>

int main() 
{
    char str[] = "foo,something,bar";

    char *p = std::strtok( str, "," );
    while ( p )
    {
        if ( std::strcmp( p, "something" ) == 0 ) std::cout << p << std::endl;
        p = std::strtok( NULL, "," );
    }

    return 0;
}
#include <iostream>
#include <sstream>

int main() 
{
    char str[] = "foo,something,bar";
    std::istringstream is( str );
    std::string word;

    while ( std::getline( is, word, ',' ) )
    {
        if ( word == "something" ) std::cout << word << std::endl;
    }

    return 0;
}
输出将与上述相同


如果需要存储单独的单词,那么可以使用类std::vector来存储它们

@Mgetz这个问题是关于用空格分割字符串的。@TimSeguine向下滚动到第二个问题answer@Mgetz我知道,我读过。但据我所知,如果问题是重复的,而不是答案是否适用,那么问题就是重复的。为什么你的问题标题有foreach数组?我不理解这与你在帖子里问的问题有什么关系。@ TimeSuGin问题是如何在C++中分割一个字符串,定界符应该是不相关的最后。这可以大大提高说,包括一个C++,而不是很大的C答案是线程安全,因为斯特罗克是最肯定的。not@Mgetz我肯定他对线程不感兴趣。我绝对不会做出那种假设,作为一名开发人员,您最不希望看到的是以后发现您的代码不是线程安全的。strtok应该用火杀死IMOstrtok应该用火杀死。