【发布时间】:2014-03-18 15:19:50
【问题描述】:
可能不是第一个问这个的人,但找不到正确的答案......
我正在尝试使用 ifstream 对象从文本文件中读取整数值。
一些整数值以十进制格式表示,而另一些则以十六进制格式表示。
例如:
0xAB 1 2 3
4 5 0x12 6
6 0xF 1 23
以下代码曾经可以工作(早在 VS6 时代), 十进制和十六进制字符串:
ifstream file(fileName);
int value = 0;
file >> value;
将其移植到 MSVC++ 2010 后,它似乎只适用于十进制字符串。
所以我假设std::stream 类中的一些基本内容发生了变化。
我说的对吗?如果是,那是什么?
无论如何,如何在不检查每个字符串的格式的情况下从文件中读取所有整数值?
谢谢
更新 - 在将我的项目从 VS6 移植到 MSVC++ 2010 时,我还必须进行更改:
从这里:
#include <fstream.h>
进入这个:
#include <fstream>
using namespace std;
也许这就是不同的原因,虽然我看不出是怎么...
另一个更新:
由于我的项目中有 GLUI 库,我必须链接一些旧的默认库;以下页面可能会有所启发:http://msdn.microsoft.com/en-us/library/8h8eh904%28v=vs.90%29.aspx。
【问题讨论】:
-
<fstream.h>是非标准的,因此可能与它有关。 -
您可能确实需要以不同的方式处理它们。
-
@herohuyongtao:那么从VS6.0开始发生了什么?
ifstream类(或其他任何地方)的区别在哪里? -
Confirmed that this does not work in C++。老实说,我认为确实如此。
-
@Lightness Races in Orbit:嗯,它适用于
ss >> std::hex >> value,但是当ifstream对象只是“停止工作”时,我仍然会遇到问题,我无法找出原因。我在我的问题中添加的链接 (msdn.microsoft.com/en-us/library/8h8eh904%28v=vs.90%29.aspx) 可能会对此提供更多见解,但我仍然不确定如何处理该问题。