C++ ifstream 读取文件大小和读取所有内容

ifstream ifs(file_name, std::ios::binary|std::ios::in);
if (ifs.is_open())
{
    ifs.seekg(0,std::ios::end);
    int len = ifs.tellg();
    ifs.seekg(0,std::ios::beg);
			
    char *buff = new char[len];
			
    ifs.read(buff , len);
    delete []buff;
}

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用 `getline` 函数来读取文件中的一行, 并指定一个字符作为行末的标志。例如: ```c++ #include <fstream> #include <string> int main() { std::ifstream infile("input.txt"); std::string line; while (std::getline(infile, line)) { // 处理 line 中的内容 } return 0; } ``` `getline` 函数会读取文件中的一行, 并将其存储到 `line` 变量中, 只要文件未到达末尾就会不断执行。 如果你想要忽略换行符, 你可以将换行符视为行末的标志, 就像这样: ```c++ #include <fstream> #include <string> int main() { std::ifstream infile("input.txt"); std::string line; while (std::getline(infile, line, '\n')) { // 处理 line 中的内容 } return 0; } ``` 这样, `getline` 就会忽略换行符, 并将其当做行末的标志。 ### 回答2: 在使用C++中的ifstream读取文件时,我们可以通过以下步骤来过滤掉回车换行符。 1. 首先,我们需要包含<fstream>头文件,以便使用ifstream类来读取文件。 2. 创建一个ifstream对象来打开文件。例如,我们可以使用以下代码创建一个名为infile的ifstream对象,并打开名为filename的文件: ``` ifstream infile(filename); ``` 3. 使用getline()函数逐行读取文件内容。getline()函数会读取一行文本并将其存储为一个字符串。例如,我们可以使用以下代码逐行读取文件内容,并存储在名为line的字符串变量中: ``` string line; while (getline(infile, line)) { // 过滤回车换行符 ... } ``` 4. 在while循环中,我们可以通过查找字符串中的回车换行符来过滤它们。我们可以使用find()函数来查找回车换行符,并将其替换为空字符串。例如,以下代码可以过滤掉字符串line中的回车换行符: ``` line.erase(std::remove(line.begin(), line.end(), '\r'), line.end()); line.erase(std::remove(line.begin(), line.end(), '\n'), line.end()); ``` 5. 在处理完每行内容后,我们可以对读取的文本进行其他操作,例如打印、存储等。 总而言之,我们可以使用ifstream读取文件,并通过查找和替换回车换行符的方式来过滤它们,以获得我们所需的文件内容。以上是一个简单的示例,您可以根据实际需求进行修改和扩展。 ### 回答3: 使用ifstream读取文件时,无法直接过滤掉回车换行符。但是我们可以使用以下方法来处理: 1. 读取文件中的每一行文本 2. 使用字符串处理函数去除每一行文本中的回车换行符 下面是一个示例的代码: ```cpp #include <iostream> #include <fstream> #include <string> int main() { std::ifstream file("example.txt"); // 替换为要读取的文件名 if (file.is_open()) { std::string line; while (std::getline(file, line)) { // 去除回车换行符 line.erase(std::remove(line.begin(), line.end(), '\r'), line.end()); // 去除回车符 line.erase(std::remove(line.begin(), line.end(), '\n'), line.end()); // 去除换行符 // 输出处理后的每一行文本 std::cout << line << std::endl; } file.close(); } else { std::cout << "无法打开文件" << std::endl; } return 0; } ``` 在这个示例中,我们首先使用ifstream打开要读取的文件,然后使用while循环逐行读取文件内容。然后,我们使用字符串的erase和remove函数去除每一行文本中的回车和换行符。最后,我们输出处理后的每一行文本。 请注意,在Windows系统中,换行符由两个字符组成,即回车符(`\r`)和换行符(`\n`)。因此,在处理过程中,我们需要分别去除这两个字符。 希望以上解答能够帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Car12

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值