c ++ split和foreach数组

时间:2014-11-12 20:53:17

标签: 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 = 0; i < str.size(); ++i) {
       if( pch[i] == "something" ) {
          cout << pch[i] << "\r\n";
       }
   }
}

谢谢

1 个答案:

答案 0 :(得分:-4)

例如

#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;
}

输出是:)

something

另一种方法是使用课程std::stringstd::istringstream。例如

#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<std::string>来存储它们。