【发布时间】:2014-04-26 13:24:58
【问题描述】:
所以我写了上面的代码,下面有这个错误。我从这里看到 getline 仅适用于 char,我尝试以其他方式编写它,使用 cin.. 但它仍然不起作用,有什么建议吗?
我真的需要这方面的帮助..
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int n;
double sum[100];
double source[100];
int broj;
ifstream ulaz("dat.txt", ios::in);
if(ulaz.is_open())
{
while(!ulaz.eof())
{
cin.sync();
cin.clear();
ulaz.getline(source,sizeof(source));
broj++;
}
}
ulaz.close();
cout<<"Insert number of days:"<<endl;
cin>>n;
for(int i=0; i<broj; i++)
{
sum[i]=1000*source[i];
sum[i]=sum[i]/source[i+1];
}
cout<<"Result: "<<sum<<endl;
system("pause");
return 0;
}
1>------ Build started: Project: Zadaci_za_1l, Configuration: Debug Win32 ------
1> zadatak2.cpp
1>c:\users\****.cpp(23): error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_Elem *,std::streamsize)' : cannot convert parameter 1 from 'double [100]' to 'char *'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
【问题讨论】:
-
尝试 stringstream 类,并读入流。您需要将流转换为双倍。你不能在 double 上使用 getline。
-
注意:我已重新格式化代码以提高可读性。这意味着错误消息中引用的行号不准确。
-
ulaz.getline从ulaz获取一行并将其放入第一个参数指向的char 数组中,将类型double[]放在那里没有任何意义。跨度> -
另外,你看过这样的问题吗? stackoverflow.com/questions/2615078/…
-
您可能迟早会发现
while(!ulaz.eof())is wrong.