C++新人求解问题错误原因及修改建议

SagacityWhite 2016-04-30 05:28:35
#include <iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
#ifdef WIN32
#define TEST_FILE "C:\\Users\\Administrator\\Desktop\\read.txt"
#else
#define TEST_FILE "C:\\Users\\Administrator\\Desktop\\read.txt"
#endif
const int N = 2048;
struct GNSSData
{
int NO;
double Alt;
double GeopH;
double Refrac;
};
void test()
{
GNSSData gnssdata[N];
fstream FILE_OPEN_WW(TEST_FILE,ios::in);
if (!FILE_OPEN_WW)
{
cerr << "open error!" << endl;
exit(1);
}
int i = 0;
int counter = 0;
while (!FILE_OPEN_WW.eof())
{
FILE_OPEN_WW >> gnssdata[i].NO >> "\t" >> gnssdata[i].Alt >> " \t" >> gnssdata[i].GeopH >> "\t " >> gnssdata[i].Refrac;//错误 1 error C2679: 二进制“>>”: 没有找到接受“const char [2]”类型的右操作数的运算符(或没有可接受的转换)

++counter;
++i;
}
FILE_OPEN_WW.close();
for (i = 0; i < counter; i++)
{
cout << gnssdata[i].NO << "\t" << gnssdata[i].Alt << "\t" << gnssdata[i].GeopH << "\t" << gnssdata[i].Refrac << endl;
}
}
int main()
{
test();
system("pause");
return 0;
}
数据格式
B= 73.965 L= -29.457
2010 1 4 0: 4:42.000
Altitude, unit: m; Geopotential height, unit: gpm; Refractivity, unit: N
NO Alt GeopH Refrac
1 127.7539 128.0322 3.001763e+002
2 257.6292 258.1852 2.954945e+002
3 386.8093 387.6362 2.909217e+002
4 515.3259 516.4172 2.864528e+002
5 643.2098 644.5590 2.820830e+002
6 770.4980 772.0988 2.778066e+002
7 897.2189 899.0650 2.736190e+002
8 1023.3960 1025.4815 2.695166e+002
9 1149.0560 1151.3749 2.654953e+002
............

-----------------------------------------------------------------------------------------------------
求指导文件读取的正确方式(能用二维数组存储最好)
...全文
203 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-05-03
  • 打赏
  • 举报
回复
乍看起来c++的cin、cout、ifstream、ofstream、istringstream、ostringstream在输入、输出上比c的scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf简单,不用格式控制符! 但是不用格式控制符,输入输出恰好是你期望的格式的时候好说;等到输入输出不是你期望的格式的时候,你就会觉得还是用格式控制符更方便、更靠谱。 摒弃cin、cout、ifstream、ofstream、istringstream、ostringstream! 使用scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf。
lm_whales 2016-05-03
  • 打赏
  • 举报
回复
输入"\t" 着个要求太特别了,编译器不知道如何处理 应该 输入到 字符串中,自行判断是否合乎要求
paschen 版主 2016-05-01
  • 打赏
  • 举报
回复
你不能把内容输入到 \t ,你需要将内容放到一个变量里,而不是一个常量
FancyMouse 2016-05-01
  • 打赏
  • 举报
回复
去掉那一票>>"\t"
小灸舞 2016-05-01
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
SagacityWhite 2016-04-30
  • 打赏
  • 举报
回复
这个不影响的,是预编译中的条件语句
ArthurJava 2016-04-30
  • 打赏
  • 举报
回复
#ifdef WIN32
#define TEST_FILE "C:\\Users\\Administrator\\Desktop\\read.txt"
#else
#define TEST_FILE "C:\\Users\\Administrator\\Desktop\\read.txt"
#endif
这不一样的吗

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧