как я могу разделить (с,) строку и сопоставить каждый элемент? Я использую gcc версии 4.6.3 на Ubuntu.
Мой "псевдокод":
#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;
}
Выход:
something
Другой подход - использовать класс std::string
и std::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>
для их хранения.
strtok
определенно не