C++中的getline是否只采用字符串类型
Does getline in C++ just take string type?
我有这个代码要从文件中读取,它可以工作。
#include "cppstd.hh"
#include <string>
int main(){
string line;
string *vdata= new string[10];
ifstream fvecin ("vector.txt");
if (fvecin.is_open()){
for (int i=0;i<10;i++){
getline(fvecin,line);
vdata[i]=line;
cout << "vdata["<<i<<"]="<< line << endl;
}
}
else{
cout << "ERROR: Cannot open the file!" << endl;
}
return 0;
}
然而,当我改为int行时,int*vdata=new int[10],(或double)不起作用,并出现以下错误:
ifstream_test.cc: In function ‘int main()’:
ifstream_test.cc:10:26: error: no matching function for call to ‘getline(std::ifstream&, int&)’
ifstream_test.cc:10:26: note: candidates are:
/usr/include/stdio.h:675:20: note: __ssize_t getline(char**, size_t*, FILE*)
/usr/include/stdio.h:675:20: note: candidate expects 3 arguments, 2 provided
/usr/include/c++/4.6/bits/basic_string.h:2734:5: note: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::getline(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&)
/usr/include/c++/4.6/bits/basic_string.tcc:1070:5: note: template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::getline(std::basic_istream<_CharT, _Traits>&, std::basic_string<_CharT, _Traits, _Alloc>&, _CharT)
您能建议我从包含任何类型(double、float等)数据的文件中读取数据的方式吗。非常感谢。
你能建议我从包含数据的文件中读取数据的方法吗任何类型的(双重、浮动等)。
试试这个怎么样:
ifstream inf;
double d;
int n, m;
inf.open("foo.txt", ios::in);
inf >> d >> n >> m;
inf.close();
同时检查文件的输入/输出
您可以使用这样的模板:
#include <iostream>
#include <string>
#include<fstream>
#include<vector>
#include<algorithm>
#include<iterator>
template <typename T>
std::vector<T> ReadFile( std::string fname)
{
std::vector<T> vec;
std::ifstream fvecin (fname.c_str());
if (fvecin.is_open()){
std::copy(std::istream_iterator<T>(fvecin),
std::istream_iterator<T>(), std::back_inserter(vec) );
}
else{
std::cout << "ERROR: Cannot open the file!" << std::endl;
}
return vec;
}
然后,
#define READ_TYPE float //change type here
int main(){
std::vector<READ_TYPE> v;
v=ReadFile<READ_TYPE>(std::string("input.txt"));
for(auto i:v)
std::cout<<i<<" "<<std::endl;
return 0;
}
请参阅"此处"(使用std::cin
而非std::ifstream
)
相关文章:
- 如何检查模板类中的变量是否为字符串类型?
- C++类字符串类型的迭代器
- 如何将字符串指针数组转换为字符串类型的智能指针向量?
- 字符串类型的 2d 数组(C++;)
- 在 Rcpp 中的字符串类型之间转换时出错
- 为什么字符串类型会导致 c++ 程序无法运行?
- 如何将字符串类型转换为 ostringstream
- 当正斜杠运算符应用于C++中的字符串类型时,它会做什么
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- 我在 c++ 中声明字符串类型时遇到问题
- 对齐C++字符串类型问题 std::字符串到 TStr
- C++无符号字符串类型的正则表达式
- 当 JSON 值应为 INT 但以字符串类型发送时,RapidJSON 崩溃
- 如何使用 std::find 从向量的第一个元素中查找字符串<字符串对<字符串、字符串> >类型?
- 我想添加两个字符串类型的矩阵.用户将不会输入行数或列的数量.用户将仅输入数组
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 如何根据定义的字符串类型在“std::cout”和“std::wcout”之间进行选择
- C++ 仅当模板为字符串类型时执行小写转换
- 字符串类型的 C++ 模板无法编译
- 如何使用新字符串而不是分配器创建自己的字符串类型向量?