2013-11-06 4 views
1

всем. У меня тяжелое время, пытаясь закодировать эту вещь, надеюсь, вы можете дать мне несколько советов. Я пытаюсь извлечь некоторые параметры из текстового файла, а затем добавить их в массив переменных char и добавить этот массив char с помощью команды pipe. Команда - команда bash.C++ Чтение из текстового файла

Моя проблема заключается в том, как получить доступ к файлу для извлечения параметров, я попытался использовать буферы и строку , но конверсии действительно не помогли, вот основная идея моего кода.

Рабочий код, если я пишу команду непосредственно к коду:

#include <string.h> 
#include <cstdlib> 
#include <cstdio> 

char *out[10], line[256], command[] = {"mycommand parameter1 parameter2 ..."}; 

FILE *fpipe; 

fpipe = (FILE*)popen(command,"r") 
fgets(line, sizeof line, fpipe) 

out[0] = strtok (line, "="); // <--- I'm tokenizing the output. 

Мой подход для чтения из файла:

std::ifstream file("/path/to/file", std::ifstream::in); 
//std::filebuf * buffer = file.rdbuf(); 
char * line = new char[]; 

//buffer->sgetn (line, lenght); 

getline(file, line) 

Закомментированный линия вещи, которые я пробовал, были и другие но я не комментировал их.

Я рассматриваю возможность переноса его на C позже, но сначала я хочу, чтобы это произошло. И я на самом деле не реализовал код добавления, так как пока не могу прочитать файл. Надеюсь, вы можете дать мне несколько советов, спасибо!

ответ

2

Вы находитесь на правильном пути, вам просто нужно использовать std::string, который является то, что getline receieves:

std::string line; 
std::getline(file, line); 

Это читает первую строку . Но если вам нужно, чтобы прочитать все содержимое файла в line просто сделать:

std::string line; 
std::istreambuf_iterator<char> beg = file.rdbuf(); 
std::istreambuf_iterator<char> end; 

line.assign(beg, end); 
+0

Спасибо, что помогло – JuanKman94

0

Я бы посоветовал сделать что-то вроде:

#include <string> 
#include <fstream> 

std::istream file("/path/to/file"); //ifstream is only infile 

std::string astringpar; 
float afloatingpar; 
//in this example there is a string and a float in the file 
//separated by space, tab or newline 
//you can continue/replace with int or other in fonction of the content 

while (file >> astringpar >> afloatpar) 
{ 
//here do what you want with the pars 
} 

Ciao Ice

Смежные вопросы