如何使用 C++ 从记事本中读取很长的文本?
How do I read a very long text from a notepad using C++?
我有一个记事本,上面有很多字符(大约 10000,数字、字母、引号等),我想把它们都读一遍。我已经尝试了在网上找到的几种方法,但 none 目前有效。
看完课文后,我也想通过替换一个特定的单词来修改它。 (我知道怎么做)
#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;
}
您发布的代码将从程序的工作目录中打开文件 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;
}
不过,在不了解您正在尝试做什么的情况下,我不能肯定地说这是正确的模式。这将取决于您的用例。
我有一个记事本,上面有很多字符(大约 10000,数字、字母、引号等),我想把它们都读一遍。我已经尝试了在网上找到的几种方法,但 none 目前有效。
看完课文后,我也想通过替换一个特定的单词来修改它。 (我知道怎么做)
#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;
}
您发布的代码将从程序的工作目录中打开文件 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;
}
不过,在不了解您正在尝试做什么的情况下,我不能肯定地说这是正确的模式。这将取决于您的用例。