getline()格式化问题

时间:2016-11-23 01:54:12

标签: c++

我正在尝试从文本文件中读取一些数据。其中一个数据名称是Chamber temperature [°C]。我用以下命令读取文件:getline(myfile, tab, '\t'); out。

问题是学位标志格式化为"Chamber temperature [�C]"

如何防止c ++对格式符号进行格式化?

P.S。 :在文本文件中,符号格式正确

代码:

 //just create a txt file on your desktop which only stores "Chamber Temperature [°C]
 myfile.open("C:\\Users\\user\\Desktop\\test.txt");  
 string tab = "";
 getline(myfile, tab, '\t');
 cout << tab << endl;

如果您使用与我下面描述的设置相同的设置,您应该遇到同样的问题,这不仅仅是语言差异的问题。 UTF-8只是不能将符号解释为ANSI。

有些解决方案我可以查找子字符串,然后根据需要替换格式,但我想在任何情况下都有一种万无一失且安全的方式来使用此代码。所以我正在寻找这两种语言之间的转换。

有关我的环境的其他信息:

我使用带有MinGW编译器的eclipse和重音c ++ 11。我使用UTF-8编码的默认文本文件和新的文本文件分隔符UNIX。 我用notepad ++打开文件,它给出了文件格式“ANSI”的估计。 我使用简单的ifstream将数据读入3D矢量(第一维:文件;第二维:行数据;第三维:列)。我使用getline将由制表符分隔的每个序列读入变量......并最终读入我的矩阵。

现在,在我将数据存储到矩阵后,我进行了一些数据搜索,这就是我的问题。因为文件格式为ANSI我不能将字符串Chamber Temperature [°C]与存储的数据进行比较,因为它永远不会找到它。

我需要将文本文件转换为UTF-8格式,然后将其存储到我的3D矩阵中。这可能吗?我刚接触编码,你能不能给我一个示例代码或伪代码?

0 个答案:

没有答案