gpt4 book ai didi

C++ 写奇怪的符号而不是字符

转载 作者:行者123 更新时间:2023-11-30 03:22:46 25 4
gpt4 key购买 nike

这个论坛的新手所以我希望我的格式没问题。

下面的意思是遍历 .txt 中的字符串(sections),然后在字符串(部分)。 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;
}

编辑:好吧,我通过将 fragment += position 切换为 fragment += section.get(position) (smh) 来运行它。现在看来我可以分段比在 python 中分段更长的字符串,但它仍然需要很长时间。任何人都可以提供任何建议来优化代码以使其运行得更快,例如如果使用迭代器而不是字符串来获取(位置)可能会使它运行得更快?否则也许是可以帮助我了解如何使用这些基本功能优化代码的资源?

最佳答案

你看到很多奇怪字符的原因是因为

fragment += position;

fragmentstring , position是一个 int .当您添加 intstring它被视为 charint 创建代码,还有很多chars在 ASCII 表的开头甚至无法打印。 See for yourself

关于C++ 写奇怪的符号而不是字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50869708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com