如何忽略 C++ 文件中的空格
How to ignore whitespace in a file for c++
我是 c++ 的初学者,我的家庭作业之一是将文件中的两个二进制数相加。这些数字在文件中由 space 分隔。假设所有二进制数都是 8 位。所以我们从文件中读取它们并将 8 位存储到一个名为 byte 的变量中,该变量是每个 Byte 对象的成员。
例如)
10111010 11110000
11111111 00000000
这是编写忽略白色 space 编码的正确方法吗?
int Byte::read(istream & file){
file.skipws;
file.get(byte, 8);
}
或者这是更好的方法?
int Byte::read(istream & file){
file.getline(byte, 8, ' ');
}
感谢您的帮助。如果在其他地方回答了这个问题,我们深表歉意。我所能找到的只是不涉及文件的示例。
文本流默认启用跳过空格。
std::string num1, num2;
if (file >> num1 >> num2)
{
// use them
}
显然,您不能使用 std::string:
#include <fstream>
std::istream& read8(std::istream& ifs, char(&arr)[8])
{
return ifs >> arr[0] >> arr[1] >> arr[2] >> arr[3] >> arr[4] >> arr[5] >> arr[6] >> arr[7];
}
int main()
{
std::ifstream file("input.txt");
char a[8], b[8];
while (read8(file, a) && read8(file, b))
{
// add a and b
}
}
我是 c++ 的初学者,我的家庭作业之一是将文件中的两个二进制数相加。这些数字在文件中由 space 分隔。假设所有二进制数都是 8 位。所以我们从文件中读取它们并将 8 位存储到一个名为 byte 的变量中,该变量是每个 Byte 对象的成员。
例如)
10111010 11110000
11111111 00000000
这是编写忽略白色 space 编码的正确方法吗?
int Byte::read(istream & file){
file.skipws;
file.get(byte, 8);
}
或者这是更好的方法?
int Byte::read(istream & file){
file.getline(byte, 8, ' ');
}
感谢您的帮助。如果在其他地方回答了这个问题,我们深表歉意。我所能找到的只是不涉及文件的示例。
文本流默认启用跳过空格。
std::string num1, num2;
if (file >> num1 >> num2)
{
// use them
}
显然,您不能使用 std::string:
#include <fstream>
std::istream& read8(std::istream& ifs, char(&arr)[8])
{
return ifs >> arr[0] >> arr[1] >> arr[2] >> arr[3] >> arr[4] >> arr[5] >> arr[6] >> arr[7];
}
int main()
{
std::ifstream file("input.txt");
char a[8], b[8];
while (read8(file, a) && read8(file, b))
{
// add a and b
}
}