我需要从长串中挑选数字

时间:2012-02-27 20:36:53

标签: c++ file

我在.txt文件中有一个大约一千个数字的字符串。我需要一次评估一个数字,将其与相邻数字进行比较,然后向下移动列表并再次执行。我正在使用C ++和get()函数。这是我到目前为止所做的:

int element[5];
ifstream file;

file.open("theNumber.txt", ios::in);
for(int i=0;i<5;i++)
{
    file.seekg(1);
    element[i]=file.get();
}
//read first 5 numbers.

现在我的代码将无法编译,并显示所有内容会让大多数人哭泣,但我想检查一下这部分是否正确。这会给我一个数组,其中包含文件中数字的前五位数字吗?

2 个答案:

答案 0 :(得分:3)

  

这会给我一个数组,其中包含文件中数字的前五位数字吗?

不,您的seekg来电每次拨打时都会将读取位置设为第二个字符;只是抛出那个电话(get()自动推进阅读位置)。

您还需要处理文本到二进制转换。最容易做到这一点:

int ch = file.get();
if (ch < '0' || ch > '9')
{
    // Handle invalid input or EOF/error...
}
element[i] = ch - '0';

答案 1 :(得分:2)

  

这会给我一个数组,其中包含文件中数字的前五位数字吗?

不,抱歉。它将为您提供文件的第二个数字,五次。

seekgtwo versions:一个用于设置文件指针从开头开始的位置,另一个用于设置文件指针相对于其他位置的位置。行file.seekg(1);将文件指针设置为绝对位置1:文件的第二个字节。因此,您的数组包含重复的相同数字。

如果您想使用该特定1重载,请考虑将呼叫中的i更改为seekg

祝你好运。


另外,正如Brendan和spencercw所说,你仍然需要转换ASCII代码。