2013-04-07 2 views
1

Cela fait partie de mon codeDéterminer un getline() point de départ en C++

string line; 
ifstream file ("Names.txt"); 

int i; 
for (i = 0; i < line.length(); ++i) { 
    if ('A' <= line[i] && line[i] <= 'Z') break; 
} 

string start = line.substr(i); 
getline(file, start, '.'); 
cout << start; 

J'ai besoin de commencer à lire une ligne de la première lettre majuscule jusqu'à la première période dans un fichier texte. À l'heure actuelle, il lit avec succès depuis le début du fichier jusqu'à la première période. J'ai donc un problème avec la détermination du point de départ i (première lettre majuscule).

J'apprécie votre aide !!

+0

'est pas initialisé coût média à quoi que ce soit, donc' I' est 0. – maditya

+0

Merci, je vais essayer le fixer :) –

Répondre

2
string line;       // line is empty 
ifstream file ("Names.txt");   // line is still empty 

int i;         // still empty 
for (i = 0; i < line.length(); ++i) { // still empty, line.length() == 0 

Cela aide-t-il? Vous devez lire à partir du fichier, en ligne (en utilisant getline), puis analyser la ligne.

+0

Oh je vois, merci je vais l'essayer tout de suite :) –

+0

Merci! Ça a marché, c'était dans un mauvais ordre. –

1

Quelque chose comme cela devrait fonctionner:

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
    string line; 
    ifstream file ("file.txt"); 
    char temp; 
    while(file>>temp) 
    { 
     if(isupper(temp)) break;//First capital letter 
    } 
    file.seekg(-1,file.cur);//rewind one char so you can read it in the string 
    getline(file,line,'.');//read until the first . 
    cout << line << endl; 
    system("pause"); 
    return 0; 
} 
+1

Rathere que 'file.cur' Je préfère utiliser' std :: ios_base :: cur' –

+0

Mm merci pour votre réponse, je suis allé dans l'autre sens avec juste déterminer un point de départ avec entier et une lettre majuscule mais je vais tester les possibilités des fonctions que vous avez introduites ici :) –