【发布时间】:2018-04-13 14:58:30
【问题描述】:
我正在尝试编写一个简单的 c++ 程序。
目标:打开一个现有的文本文件,获取姓名和姓氏并将它们保存到姓名和姓氏字符串中。打印姓名和姓氏并跳到下一行。重复直到文件结束。
我有两个问题
我正在使用最新更新的 Windows 8.1 和 Visual Studio 2017。
主要代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include "stdafx.h"
#include <iostream>
using namespace std;
int main() {
FILE *fPtr;
if ((fPtr = fopen("newStudentsList.txt", "r")) == NULL) {
cout << "File could not be opened.\n";
system("pause");
}
else {
char *name = new char[100];
char *surname = new char[100];
rewind(fPtr);
while (!feof(fPtr)) {
fscanf(fPtr, "%s\t%s\n", name, surname);
cout << name << " " << surname << endl;
}
system("pause");
}
return 0;
}
在输出中,我无法正确看到土耳其语字符。这是我的第一个问题。
我的第二个问题是我不能正确地取名字和姓氏,因为在文本文件中它们不是用相同的制表符或空格写的,有些人有一个名字,有些人有两个名字。
所有文件都是here
如何打印非英文字符?
如何正确取名和姓氏?
【问题讨论】:
-
请一次只问一个问题,另见stackoverflow.com/help/how-to-ask
-
为什么不用fstream来处理文件,而是用c风格的FILE,这样会更有效率
-
@J.Snipe 这无关紧要。每个问题你应该只问 1 个问题。
-
@J.Snipe 混合 C 和 C++ 功能是一个非常糟糕的主意。您应该使用streams 打开/写入文件,如in this C++ tutorial 所示。无论编码如何,您都可以使用
ifstream读取非Unicode 文件。您可以使用wifstream读取UTF16 文件。 UTF8 文件被视为 -
@J.Snipe 然后使用ifstream 从中读取 std::string 和 char 数据。 C++ 仍然没有 UTF8 字符串的特殊类型。 UTF8 文件应该像 ASCII 文件一样被读取和处理。
标签: c++ visual-studio file utf-8