gpt4 book ai didi

C++ getline 双重错误

转载 作者:行者123 更新时间:2023-11-28 07:00:48 25 4
gpt4 key购买 nike

所以我写了上面的代码,下面有这个错误。我从这里看到 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 ==========

最佳答案

正如其他人指出的那样:getline不适合double秒。如果您的文件包含多个 double ,由空格或换行符分隔,您可以使用 std::istream::operator>>(double&)通过使用隐式 std::istream_iterator<double> .此外,如果您想处理灵活数量的值,请不要使用 C 风格的数组,而应使用 vector 。

从文件中读取双倍的代码 data.txt (只包含 double )到一个 vector 中,将它们加起来可能看起来像

#include <fstream>
#include <vector>
#include <string>
#include <iostream>
#include <iterator>

std::vector<double> dv_from_file(std::string const & filename)
{
std::ifstream input(filename.c_str(), std::ios_base::in);
std::vector<double> data;
if (input.good())
{
std::copy(std::istream_iterator<double>(input),
std::istream_iterator<double>(),
std::back_inserter(data));
}
return data;
}

int main(void)
{
std::vector<double> source(r_dv_from_file("data.txt"));
std::vector<double>::size_type const N(source.size());
double sum(0.0);
for (auto value : source) sum += value;
std::cout << "File contains " << N << " elements." << std::endl;
std::cout << "Sum of all elements is: " << sum << std::endl;
}

关于C++ getline 双重错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22520449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com