2009-11-02 6 views
1

Я сделал это раньше ... Но я забыл. У меня есть файл с некоторыми данными:Стрим и C++ - синтаксический анализ

0,5 0,6 0,7 1,2 1,5

Как я могу читать это в C++? Я сделал это с потоком ... что-то вроде:

float var = 0; 
stream >> var; 
+2

В дополнение к ответам ниже, здесь очень хорошая ссылка для C++, вы найдете дополнительную информацию о потоках в разделе 6: http://www.icce.rug.nl/documents/cplusplus/ – RedGlyph

ответ

3

Что-то вроде этого?

std::ifstream stream("C:/a.txt"); 
    float var = 0; 
    while(stream >> var) 
    { 
     //Do some processing 
    } 
+2

'eof()' возвращает true только после неудачного извлечения. – avakar

+0

Я отредактировал ответ, чтобы сделать его безопасным. @Ockonal: Пожалуйста, проверьте отредактированный ответ. – Naveen

+0

Хорошо, спасибо. Я это сделал. – Ockonal

0

Что-то вроде этого. Оператор < < обрабатывает пробелы как разделитель.

float array[5] = {0.0f}; 

for(int i = 0; i < 5; i++) 
{ 
    stream >> array[i]; 
} 

BTW Я сделал 5, так как у вас было 5 в вашем примере. (и я предполагаю, что у вас есть настройка потока)

+0

@ Ólafur - Как это будет работать? Возможно, моя синтаксическая память C++ отключается, но, читая ее, вы будете читать из файла в * адрес * 'var', а не в следующую позицию в массиве. Вы должны захотеть поместить '[i]' обратно в конец 'var', так как я изменил для вас ранее - если это не способ использовать массивы, о которых я никогда не видел и не слышал раньше. – warren

+0

Я просто ошибка от меня. –

0

Вы имеете в виду, как открыть файл и прочитать данные из него?

Это должно выглядеть примерно так:

float var; 
ifstream infile("filename"); 
if(infile.good()){ 
    while(!infile.eof()){ 
     infile >> var; 
     cout << var << "is the next value\n"; 
    } 
} 
+0

Почему нисходящий? есть ли что-то в моем примере? – warren

+0

вот как я всегда делал ввод-вывод файлов; и как я всегда видел это в различных справочных материалах. – warren

+0

Уоррен, ваш код неправильный, см. Мой комментарий в ответе Виджей (я не сделал ни одного слова). – avakar

0

Для чтения из файлов используйте std :: ifstream.

6

Следующий фрагмент должен дать вам ключ. Не забудьте включить <fstream>.

std::ifstream fin("filename.txt"); 
float value; 
while (fin >> value) 
{ 
    // Do whatever you want with the value 
} 

Не пытайтесь проверить fin.eof() он не скажет вам, если вы собираетесь поднять до конца файла.

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