una por manejo leer extraer ejemplos caracteres caracter cadenas cadena c++ iostream stdio

por - string en c++



Encuentra todas las apariciones y ubicaciones de una subcadena. (2)

Sé que se ha aceptado una respuesta, pero esto también funcionará, y le ahorrará tener que cargar el archivo en una cadena ...

#include <iostream> #include <fstream> #include <vector> #include <algorithm> using namespace std; int main(void) { const char foo[] = "foo"; const size_t s_len = sizeof(foo) - 1; // ignore /0 char block[s_len] = {0}; ifstream f_in(<some file>); vector<size_t> f_pos; while(f_in.good()) { fill(block, block + s_len, 0); // pedantic I guess.. size_t cpos = f_in.tellg(); // Get block by block.. f_in.read(block, s_len); if (equal(block, block + s_len, foo)) { f_pos.push_back(cpos); } else { f_in.seekg(cpos + 1); // rewind } } }

Estoy escribiendo un programa para analizar algunos datos guardados como archivos de texto. Lo que estoy tratando de hacer es encontrar la ubicación de cada aguja en un pajar. Ya puedo leer el archivo y determinar el número de ocurrencias, pero también estoy buscando el índice.


string str,sub; // str is string to search, sub is the substring to search for vector<size_t> positions; // holds all the positions that sub occurs within str size_t pos = str.find(sub, 0); while(pos != string::npos) { positions.push_back(pos); pos = str.find(sub,pos+1); }

Editar . Leí mal tu publicación, dijiste subcadena, y asumí que querías decir que estabas buscando una cadena. Esto seguirá funcionando si lees el archivo en una cadena.