可能不是第一个问这个问题,但找不到合适的答案......
我正在尝试使用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。
答案 0 :(得分:0)
您可以尝试使用std :: hex修饰符:http://coliru.stacked-crooked.com/a/50c80c6bc00031fc
#include <iostream>
#include <sstream>
int main()
{
std::stringstream ss("1 2 3 0XFF 4 5 6");
unsigned value = 0;
while (ss >> std::hex >> value) {
std::cout << value << std::endl;
}
}
输出:
1
2
3
255
4
5
6
我只是将std :: hex添加到@ lightness-races-in-orbit提案中。