此论坛的新功能,所以我希望我的格式化正常。
以下内容是对字符串中的每个字符(sections
)迭代.txt中的字符串(nuc(
),然后运行函数section
)。每个字符上的nuc()
要么将字符添加到名为fragment
的字符串中,要么添加句点"."
。如果在字符串的末尾执行nuc
,它应该将片段写入文本文件" fragments.txt"。因为nuc
在其自身内执行,所以它首先将片段缩短到正在执行nuc
的位置。
不幸的是,当我执行代码时,它似乎并没有写出字符,而是写出奇怪的符号(旋转的L'或扑克牌套装)。我应该使用字符串以外的东西吗?这基本上是从python中翻译出来的,所以你可以想象我能够实现的疏忽。
我在过去两天里已经了解了大部分内容,所以如果这是一个非常愚蠢的疏忽,我会事先道歉。我怀疑这可能是由于我初始化nuc
功能的方式,或者我称之为的方式。
我提前感谢任何帮助。我怀疑我的代码看起来很痛苦。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream sections("sections.txt");
ofstream fragments("fragments.txt");
string fragment;
void nuc(string section, int position)
{
for (int i = 0; i <= 1; i++)
{
fragment.resize(position);
cout << i << endl;
if (i == 0)
{
fragment += ".";
}
else if (i == 1)
{
fragment += position;
}
try
{
section.at(position + 1);
nuc(section, position + 1);
}
catch (exception out_of_range)
{
fragment += "\n";
fragments << fragment;
}
cout << fragment << endl;
}
}
int main()
{
string section;
int pos = 0;
while (getline(sections, section))
{
nuc(section, pos);
}
sections.close();
system("pause");
return 0;
}
编辑: 好吧,我通过将片段+ =位置切换到片段+ = section.get(位置)(smh)来运行它。现在看来我可以在python中分割出更长的字符串,但它仍然需要很长时间。任何人都可以提供任何建议来优化代码,使其运行更快,例如如果使用迭代器而不是字符串来获取(位置)可能会使它运行得更快?否则,可能是一个资源,可以帮助我学习如何使用这些基本功能优化代码?
答案 0 :(得分:2)
你看到很多怪异角色的原因是因为
fragment += position;
fragment
是string
,position
是int
。当您将int
添加到string
时,它会被视为从char
代码创建的int
,并且在ASCII表开头的许多chars
都不是甚至可打印。 See for yourself