C++;函数从字符串中误读字符 我正在做一个项目,用以在C++中使用OOP。该程序应该从“input.txt”中提取任意字符串,并将其输出到“output.txt”,并转换成莫尔斯电码。这将是有效的,除了某些字符被解释为“.”而不是它应该是什么。我认为显示代码会更有意义
运行时的输出:C++;函数从字符串中误读字符 我正在做一个项目,用以在C++中使用OOP。该程序应该从“input.txt”中提取任意字符串,并将其输出到“output.txt”,并转换成莫尔斯电码。这将是有效的,除了某些字符被解释为“.”而不是它应该是什么。我认为显示代码会更有意义,c++,string,class,methods,C++,String,Class,Methods,运行时的输出: Debug, untranslated: T Debug, translated: - Debug, untranslated: h Debug, translated: .... Debug, untranslated: . Debug, translated: ? Debug, untranslated: . Debug, translated: ? Debug, untranslated: . Debug, translated: ? Debug, untranslated
Debug, untranslated: T
Debug, translated: -
Debug, untranslated: h
Debug, translated: ....
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: e
Debug, translated: .
Debug, untranslated:
Debug, translated:
Debug, untranslated: r
Debug, translated: .-.
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: e
Debug, translated: .
Debug, untranslated: d
Debug, translated: -..
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated:
Debug, translated:
Debug, untranslated: f
Debug, translated: ..-.
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: o
Debug, translated: ---
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: x
Debug, translated: -..-
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated:
Debug, translated:
Debug, untranslated: j
Debug, translated: .---
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: u
Debug, translated: ..-
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: m
Debug, translated: --
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: p
Debug, translated: .--.
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: s
Debug, translated: ...
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated:
Debug, translated:
Debug, untranslated: o
Debug, translated: ---
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: v
Debug, translated: ...-
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: e
Debug, translated: .
Debug, untranslated: r
Debug, translated: .-.
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated:
Debug, translated:
Debug, untranslated: t
Debug, translated: -
Debug, untranslated: h
Debug, translated: ....
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: e
Debug, translated: .
Debug, untranslated:
Debug, translated:
Debug, untranslated: b
Debug, translated: -...
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: r
Debug, translated: .-.
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: o
Debug, translated: ---
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: w
Debug, translated: .--
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: n
Debug, translated: -.
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated:
Debug, translated:
Debug, untranslated: d
Debug, translated: -..
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: o
Debug, translated: ---
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: g
Debug, translated: --.
Debug, untranslated: -
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated: .
Debug, translated: ?
Debug, untranslated:
Debug, translated: ?
input.txt:
The red fox jumps over the brown dog.
output.txt(运行后填写):
main.cpp:
#include <iostream>
#include <string>
#include <fstream>
#include <unistd.h>
#include <string>
#include <sstream>
#include "morseTranslator.cpp"
using namespace std;
ifstream input("/Users/michaelsimanski/Documents/Projects C++/morse-coded/input.txt"); //init input controller
ofstream output("/Users/michaelsimanski/Documents/Projects C++/morse-coded/output.txt"); //init output controller
int main(int argc, char const *argv[])
{
if (!(input.is_open() && input.good()))
{
cout << "ifstream is FUBAR, exiting";
}
else
{
cout << "ifstream is open and good, proceeding" << "\n"; //it is right and truly good
std::stringstream fileContents; //init message, that will be filled by input.txt
fileContents << input.rdbuf();
output << morseTranslator::translate(fileContents.str());
return 0;
}
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括“MorsetTranslator.cpp”
使用名称空间std;
ifstream输入(“/Users/michaelsimanski/Documents/Projects C++/morse coded/input.txt”)//初始化输入控制器
流输出(“/Users/michaelsimanski/Documents/Projects C++/morse-coded/output.txt”)//初始化输出控制器
int main(int argc,char const*argv[]
{
if(!(input.is_open()&&input.good())
{
库特
将在迭代时更改字符串,并且convertChar
被插入的点和破折号绊倒
您最好附加并返回translatedText
。看起来您在某个时候正沿着这条路线前进
将在迭代时更改字符串,并且convertChar
被插入的点和破折号绊倒
您最好附加并返回translatedText
。看起来您在某个时候正沿着这条路线前进。您的问题来自哪里
toBeTranslated.replace(i, 1, morseTranslator::convertChar(toBeTranslated.at(i)));
每次下一次迭代都在解析刚刚替换到字符串中的内容时,您都会使用此命令来践踏整个字符串。您应该在循环中使用translatedText
translatedText += morseTranslator::convertChar(toBeTranslated.at(i));
然后从函数返回translatedText
。否则,您需要输入i
,添加到字符串中的字符量MorsetTranslator::convertChar(toBeTranslated.at(i))
,以便尝试转换已转换的内容。您的问题来自
toBeTranslated.replace(i, 1, morseTranslator::convertChar(toBeTranslated.at(i)));
每次下一次迭代都在解析刚刚替换到字符串中的内容时,您都会使用此命令来践踏整个字符串。您应该在循环中使用translatedText
translatedText += morseTranslator::convertChar(toBeTranslated.at(i));
然后从函数返回translatedText
。否则,您需要输入i
,添加到字符串中的字符量MorsetTranslator::convertChar(toBeTranslated.at(i))
,以便尝试转换已转换的内容。无关:\35;包括“MorsetTranslator.cpp”
通常是一件不好的事情。您应该包含标题并编译cpp文件。@user4581301是的,我知道,它是调试一段时间后遗留下来的。我建议在默认
语句处放置一个断点,然后运行您的程序。请查看字符的值。:-)无关:\include”MorsetTranslator.cpp"
通常是一件不好的事情。你应该包含标题并编译cpp文件。@user4581301是的,我知道,它是调试一段时间后留下的。我建议在default
语句处放置一个断点,然后运行你的程序。请查看字符的值。:-)facepalm我上次处理这个问题已经有一段时间了忘记了我在做什么,使用了错误的变量。有时它需要另一组眼睛!谢谢!facepalm自从我上次做这个已经有一段时间了,我忘记了我在做什么,使用了错误的变量。有时它需要另一组眼睛!谢谢!
toBeTranslated.replace(i, 1, morseTranslator::convertChar(toBeTranslated.at(i)));
translatedText += morseTranslator::convertChar(toBeTranslated.at(i));