【问题标题】:How do I read a very long text from a notepad using C++?如何使用 C++ 从记事本中读取很长的文本?
【发布时间】:2018-08-22 17:31:23
【问题描述】:

我有一个记事本,上面有很多字符(大约 10000 个,数字、字母、引号等),我想全部阅读。我尝试了几种在网上找到的方法,但到目前为止都没有奏效。

阅读完文字后,我还想通过替换一个特定的单词来修改它。 (我知道怎么做)

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {

ifstream file("export_descr_buildings.txt");
string content;

while(file >> content) {
cout << content ;
}
return 0;
}

【问题讨论】:

  • 欢迎来到 Stack Overflow!你能告诉我们你迄今为止尝试过的一些方法以及为什么它们没有奏效吗?如果您发布您编写的示例代码,我们可以查看它,看看您尝试的策略之一是否有简单的修复方法。
  • 什么是记事本?你是说文本文件吗?请明确说明您尝试过哪些方法以及它们以何种方式失败。
  • 1.他们失败了,因为每当我尝试运行代码时,输​​出都是 0 或什么都没有。是的,我的意思是一个文本文件。
  • 对于未来的上下文,“10000 个字符”并不是大多数现代程序员认为的“非常长”的文本文件。毕竟,这只有 10kb。读取 10kb 文件有很多好的解决方案,但它们不会是普通程序员在读取“非常长的文本”时会想出的解决方案,这会直观地建议文件大小在数 GB 范围内。跨度>
  • 现在添加代码后,我猜你的文本文件放在错误的文件夹中,所以根本没有被读取。

标签: c++ string text codeblocks


【解决方案1】:

您发布的代码将从程序的工作目录中打开文件 export_descr_buildings.txt 并打印出其内容(主要是 - 稍后会详细介绍。)如果您根本没有看到任何内容,这可能意味着该文件无法正确打开。你可以通过写一些东西来检查文件是否打开:

ifstream file("export_descr_buildings.txt");
if (!file) {
    // Report an error, and (probably) exit the program.
}

我会先尝试这个,看看问题是否在于文件是否可以打开。如果不是,那才是真正的问题,那么问题就是为什么。最可能的罪魁祸首是文件位于错误的目录中,您可以尝试通过将文件移动到不同的候选位置来解决该问题,直到您可以打开它。

这里还有另一个问题,那就是您读取文件的方式可能不会按照您的意愿执行。默认情况下,如果你写

file >> content;

输入将消耗空格并且只读取到空格。因此,如果您有一个包含文本的文件

A B C D

你会看到打印输出

ABCD

因为所有的空格都会被删除。如果这就是你想做的,那就太好了!另一方面,如果您想逐字阅读文件的内容并将其打印出来,我建议使用以下成语:

for (string line; getline(file, line); ) {
    cout << line << endl;
}

但是,如果不知道您要做什么,我不能肯定这是正确的模式。这将取决于您的用例。

【讨论】:

  • 编辑:我设法让它工作,CodeBlocks 有问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-03-28
  • 2021-11-10
  • 2014-03-19
  • 1970-01-01
  • 2013-12-25
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多