【发布时间】:2015-06-26 22:33:24
【问题描述】:
我有一个文本文件,我正在向其中添加标签以使其 XML 可读。为了让我们的读者识别它是有效的,每一行都必须至少包含在标签中。我的问题出现了,因为这实际上是一本叙利亚语翻译词典,所以有很多非标准字符(实际的叙利亚语单词)。我看到完成我需要的最直接的方法是简单地在每一行前面加上所需的标签,而不必访问或修改该行的其余部分。任何其他选项也将不胜感激。
ifstream in_file;
string file_name;
string line;
string line2;
string pre_text;
string post_text;
int num = 1;
pre_text = "<entry n=\"";
post_text = "</entry>";
file_name = "D:/TEI/dictionary1.txt";
in_file.open(file_name.c_str());
if (in_file.is_open()){
while (getline(in_file, line)){
line2 = pre_text + to_string(num) + "\">" + line + post_text;
cout << line2;
num++;
}
}
有问题的文件可以下载here.
【问题讨论】:
-
考虑以 unicode 运行文件 IO。为你省去不少烦恼。 stackoverflow.com/questions/5026555/… 尤其要注意第 3 点。
-
考虑使用 stringstream ,而不是使用 + 运算符附加到字符串。它应该更快,并且最终切换到写入输出文件变得轻而易举。
-
记住永远不要在现有文件上输出,总是输出到一个新文件然后重命名。
-
我的问题是,当编译器读取该行时,它会混淆所有叙利亚语(Aramaic 字体)文本。