Поэтому я хочу получить строку из текстового файла, извлечь первое слово в каждой строке и сохранить в массив символов «op». У меня возникают проблемы с пробелами, которые идут перед первым словом. Первая строка в тексте — «потрясающий соус», вторая — «да», третья — «круто», а четвертая — «да, хорошо». ». У него проблемы с пробелами перед словом да.
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;
}
}
}
Если я вас правильно понял, вам нужно следующее. я использовал 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
вы должны использовать k, чтобы начать извлечение строки
numofchar = k;
if (wordStart = true)
{
do
{
op[numofOpChar] = other[numofChar];