2016-02-27 3 views
1

screenshot Привет, ребята, я пытаюсь прочитать текстовый файл с тремя удвоениями в строке, а затем сохранить эти три значения в мои переменные (1 переменная на двойной).C++ читает удваивает из текстового файла

Пока мой код выглядит так:

cout<<"ready to read file...:"; 
ifstream theFile("pose.txt"); 
double first,second,third; 
while(theFile >> first >> second >> third){ 
    cout<<"In while loop and got following values: "; 
    cout<< first<<endl<< second <<endl<< third; 
} 

И мой входной файл выглядит следующим образом при открытии:

1.5 2.4 3.3 

Однако даже несмотря на первые сеансы COUT и он говорит мне, что программа готова прочитать файл, он не входит в цикл while.

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

Любые помощь приветствуется, Спасибо.

+2

Отправьте свой файл ввода тоже ... –

+1

Вы пытались выполнить код по строкам в отладчике? –

+0

Я также отправил свой файл ввода, да, я пробовал отлаживать, но я не уверен, что, похоже, он пропускает начало цикла while. –

ответ

0

Я нашел ответ на другой вопрос в StackOverflow. Это ссылка на ответ: https://stackoverflow.com/a/23448835/4117002

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

Спасибо за помощь, в любом случае, всем!

0

Я не признаю ваш IDE с экрана, но если он, как и другие Иды, ваша программа не будет по умолчанию запускаться в каталоге, содержащем исходный файл main.cpp и файл данных example.txt. Он будет запущен в каталоге, настроенном в настройках проекта , возможно, в том месте, где создается исполняемый файл.

Итак, давайте притвориться, что исполняемый файл (debug build) создан в Products/Debug и . В этом случае:

std::ifstream theFile("example.txt"); 

потерпит неудачу, потому что нет файла называется example.txt в Products/Debug. Вам необходимо будет открыть theFile с относительным путем:

std::ifstream theFile("../../InputFileExample/example.txt"); 

или же указать абсолютное имя файла.

0

Предполагая, что вы знакомы с CPP:

  1. буфера каждая строка ifstream данных в std::string. Пример:

    std::getline(std::ifstream , std::string) 
    
  2. буфере std::string в std::istringstream. Пример:

    std::istringstream (std::string) 
    
  3. Split std::istringstream в двойных значений вам нужно.Пример:

    istringstream iss 
    

iss >> first >> second >> third 

Good Luck!