首页 > 解决方案 > 如何使用 C++ 从记事本中读取很长的文本?

问题描述

我有一个包含很多字符(大约 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;
}

标签: c++stringtextcodeblocks

解决方案


您发布的代码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;
}

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


推荐阅读