2016-11-20 2 views
-1

Итак, я хочу получить строку из текстового файла и извлечь первое слово в каждой строке и сохранить в массиве char «op». У меня проблемы с пространствами, которые появляются перед первым словом. Первая строка в тексте - «удивительный соус», вторая - «да», третья - «крутая», а четвертая - «да» ». У него проблемы с пространством перед словом да.Извлечение Char Array Из getline, без использования строки

infile.open ("vec.txt");

//define line pointer 

char* line=new char[100]; 
char other[100]; 
char op[100]; 
int numofLines = 0; 
int k = 0; 
bool wordStart = false; 

//get line 
while (infile.getline(other,100)) 
{ 
    int numofChar = k; 
    int numofOpChar = 0; 
    int r = 0; 
    int p = 0; 

    while (other[k] == ' ') 
    { 
     while (other[k] != ' ') 
     { 
      wordStart = true; 
     } 
     k++; 
     cout << k << endl; 
    } 

    if (wordStart = true) 
    { 
     do 
     { 
      op[numofOpChar] = other[numofChar]; 
      numofChar++; 
      numofOpChar++; 

     } 
     while (other[numofChar] != ' '); 

     if (op[numofChar] != ' ') 
     { 
      cout << op << endl; 
     } 

    } 

}

+0

Вы хотите, чтобы сцепить все первые слова в файле на один символьный массив ор? –

+0

Нет, я хочу, чтобы массив опкодов содержал первое слово каждый раз в каждом экземпляре. – ruchithelamp

+0

Вы можете пройти через код с помощью отладчика? Где это происходит? – pm100

ответ

0

Если я вас правильно понял, что вам нужно, это следующее. Для простоты я использовал std::stringstream вместо файла.

#include <iostream> 
#include <sstream> 
#include <cstring> 
#include <limits> 

int main() 
{ 
    const size_t N = 100; 
    const char text[] = "awesome sauce\n" "yes\n" "cool\n" " yeah ok"; 
    char line[N]; 
    char op[N]; 
    size_t pos = 0; 

    std::istringstream is(text); 

    while (is >> op) 
    { 
     is.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
     std::cout << op << std::endl; 
    }  

    return 0; 
} 

Выход программы

awesome 
yes 
cool 
yeah 
0

и должны использовать K, чтобы начать извлечение Струнные

numofchar = k; 
if (wordStart = true) 
{ 
    do 
    { 
     op[numofOpChar] = other[numofChar]; 
Смежные вопросы