Я предполагаю, что вызов func
ожидает C-строку как вход. В этом случае вы можете сделать следующее:
string theString = "abc123";
char tempCString[2];
string result;
tempCString[1] = '\0';
for( string::iterator it = theString.begin();
it != theString.end(); ++it )
{
tempCString[0] = *it;
result = func( tempCString );
}
Это создаст небольшую C-строку (массив символов с нулевым символом в конце), который будет иметь длину 1 для каждой итерации.
Цикл for
может быть выполнен с индексом (как вы его написали) или с итераторами (как я написал), и он будет иметь тот же результат; Я предпочитаю итератор только для согласованности с остальной частью STL.
Другая проблема, на которую следует обратить внимание (хотя это может быть просто результатом обобщения кода), заключается в том, что result
будет перезаписываться на каждой итерации.