我在.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.
现在我的代码将无法编译,并显示所有内容会让大多数人哭泣,但我想检查一下这部分是否正确。这会给我一个数组,其中包含文件中数字的前五位数字吗?
答案 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)
这会给我一个数组,其中包含文件中数字的前五位数字吗?
不,抱歉。它将为您提供文件的第二个数字,五次。
seekg
有two versions:一个用于设置文件指针从开头开始的位置,另一个用于设置文件指针相对于其他位置的位置。行file.seekg(1);
将文件指针设置为绝对位置1:文件的第二个字节。因此,您的数组包含重复的相同数字。
如果您想使用该特定1
重载,请考虑将呼叫中的i
更改为seekg
。
另外,正如Brendan和spencercw所说,你仍然需要转换ASCII代码。