C ++读取文本文件中的双精度数

时间:2016-02-27 17:02:47

标签: c++ double text-files ifstream

screenshot 嗨,大家好我试图读取连续3个双打的文本文件,然后将这三个值保存到我的变量中(每个双变量1个变量)。

到目前为止,我的代码看起来像这样:

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循环。

我尝试过使用其他方法来阅读无效的文件。

欢迎任何帮助, 感谢。

3 个答案:

答案 0 :(得分:0)

我在StackOverflow上的另一个问题上找到了答案。 这是答案的链接: https://stackoverflow.com/a/23448835/4117002

基本上我必须在Xcode中指定文本文件的路径,即使我已经在项目中创建了它。

感谢所有人的帮助!

答案 1 :(得分:0)

我不会从屏幕截图中识别您的IDE,但如果它与其他IDE一样, 默认情况下,您的程序不会在包含的目录中运行 您的源文件main.cpp和您的数据文件example.txt。 它将在项目中配置的目录中运行 设置,可能是创建可执行文件的设置。

因此,让我们假装Products/Debugstd::ifstream theFile("example.txt"); 中创建(调试版本)可执行文件 在那里跑。在那种情况下:

example.txt

将失败,因为Products/Debug中没有名为theFile的文件。 您需要使用相对路径打开std::ifstream theFile("../../InputFileExample/example.txt");

COUNT
countmiss = v1 v2 v3 v4 v5 v6  (MISSING).

或者指定绝对文件名。

答案 2 :(得分:0)

假设您熟悉cpp:

  1. ifstream数据的每一行缓冲为std::string。例如:

    std::getline(std::ifstream , std::string )
    
  2. std::string缓冲到std::istringstream。例如:

    std::istringstream (std::string )
    
  3. std::istringstream拆分为您需要的双精度值。例如:

    istringstream iss
    
  4. iss >> first >> second >> third
    

    祝你好运!