笔者最近用C++读取txt文件,遇到了读取数据乱码或数据错误、文件打不开的问题,现将其中的坑写下,供参考。
1、读数据乱码或结果错误
编码方式有误将导致读数据乱码或结果错误(笔者在出错时结果为0)。乱码是由于编码方式导致的,可以用notepad++打开将编码格式转为ANSI,如下图:
也可参考:https://blog.csdn.net/zhancf/article/details/49930969
2、文件未能打开
错误代码(打开程序所在目录下data文件夹内Height.txt):
#include <iostream>
#include<fstream>
using namespace std;
int main() {
ifstream infile;
infile.open(".\data\Height.txt");
if(!infile.is_open())
cout << "Error opening file";
else{
int height;
infile >> height;
cout << height;
}
return 0;
}
错误原因是由于文件路径中'\'应为'\\'(百度转义字符),以下是正确代码:
#include <iostream>
#include<fstream>
using namespace std;
int main() {
ifstream infile;
infile.open(".\\data\\Height.txt");//或者:infile.open("./data/Height.txt");
if(!infile.is_open())
cout << "Error opening file";
else{
int height;
infile >> height;
cout << height;
}
return 0;
}