如何阻止在getline字符串C++的开头读取奇怪的符号
How to stop strange symbols from being read in the beginning of a getline string C++?
我有一个从.txt文件导入字符串的函数,但当我使用getline导入时,第一个字符串会显示为前面附加了3个奇怪的符号。每隔一根绳子都很好。
我不知道是不是文件本身,但我试着制作了一个新文件,它仍然读取奇怪的符号。
我用不同的.txt文件中的不同数据(静态字符串(尝试了一个类似的函数,但我根本没有奇怪的符号。
void SavagePlants::importInfo(std::fstream& importFile)
{
plants = new PlantCare[numPlants];
int i = 0;
while (getline(importFile >> std::ws, plants[i].species, '#')) {
getline(importFile, plants[i].sunlight, '#');
wrapText(plants[i].sunlight);
getline(importFile, plants[i].water, '#');
wrapText(plants[i].water);
getline(importFile, plants[i].temperature, '#');
wrapText(plants[i].temperature);
getline(importFile, plants[i].soil, '#');
wrapText(plants[i].soil);
getline(importFile, plants[i].fertilizer, '#');
wrapText(plants[i].fertilizer);
getline(importFile, plants[i].dormancy, '#');
wrapText(plants[i].dormancy);
++i;
}
}
这就是第一个字符串的输出:
╗┐Temperate Sundew
您的文本文件以UTF-8 BOM(0xEF 0xBB 0xBF
(开头。您需要:
-
在不存在BOM的情况下创建UTF-8文本文件。
-
在读取文件的其余部分之前,只需跳过这些字节。
-
imbue()
是fstream
中的UTF-8语言环境,它知道如何识别和忽略这些字节。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++将文本文件中的数据读取到结构数组中
- 正在将csv文件读取为双精度矢量
- ifstream 读取以 开头的每个文件
- C++从文件中读取不同类型的数据,直到有一个以数字开头的字符串
- 从文件的开头读取,而不会浪费太多内存
- 是否可以在该用户注销后读取/打开用户密钥(HKEY_USERS中的密钥并以 s-1-5-21xxx 开头)
- 如何将ifstream返回到刚刚在C++中读取的行的开头
- 这是怎麽?在读取使用 Unicode 编码的文本文件后控制台输出的开头
- 在链表的开头插入时读取内存时出错
- C++fread读取文件开头的随机字符
- 从链表的末尾开始读取值,而不是从开头
- c++从文件开头读取到指定字节