【发布时间】:2016-05-29 19:11:36
【问题描述】:
我的 while 循环似乎没有初始化。文件 filename.csv 是一个 CSV 文件,其中只有一列包含 -1 和 1 之间的 2000 个数字。我已经尝试使用 \n 和 \r 进行 getline。两者似乎都不起作用。我没有得到任何输出。
我对 C++ 很陌生,所以这可能很明显。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
float rarray_train[2000];
int rrow_train=0;
ifstream r_train("filename.csv");
string rline_train;
while( getline(r_train,rline_train,'\n') )
{
rarray_train[rrow_train] = stof( rline_train.c_str() );
cout<<rarray_train[rrow_train]<<endl;
++rrow_train;
}
return 0;
}
编辑:对此感到抱歉。我拼错了我的文件路径。谢谢你的帮助。不知道这里的礼仪,所以如果您认为我应该删除问题,请告诉我。
【问题讨论】:
-
提示:在提出任何问题之前,请务必将您的代码缩减为minimal reproducible example。这要么引导你找到答案,要么至少提出一个更好的问题。
-
使用调试器或一些调试语句来查看执行是如何通过循环的。还要检查打开文件是否成功,并且您还应该有条件在 2000 次迭代后退出循环
-
@Deduplicator 它对我来说就像一个 MCVE,当然除了不包括输入文件
-
@Deduplicator 你建议我删除什么?
-
问题的最可能原因是运行程序的目录中不存在文件“filename.csv”。添加一行来检查文件是否打开成功。
if (r_train.is_open()) { ... }.
标签: c++ while-loop getline