gpt4 book ai didi

c++ - ifstream:从文件中读取十进制格式和十六进制格式的整数值

转载 作者:太空狗 更新时间:2023-10-29 23:16:41 26 4
gpt4 key购买 nike

可能不是第一个问这个问题的人,但找不到正确的答案...

我正在尝试使用 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 .

最佳答案

您可以尝试使用 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 提案中。

关于c++ - ifstream:从文件中读取十进制格式和十六进制格式的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483631/

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