我忙于实践。我必须输入字符串或消息,并将其转换为摩尔斯电码: 'A'= .- 'B'= -... ECS。
通过使用一系列if语句,我可以毫无问题地做到这一点。
for(int i = 0;i < stringvalue.length();i++)
{
if(stringvalue == 'A')
cout << ".-";
//there is 26 if statements
}
但是当我输入一个字符串时,例如
"Testing data"
只有字符串的第一部分被转换(测试被转换)为莫尔斯。
为什么不在空格后转换零件。如果字符串中有空格,则必须输出“/”。
答案 0 :(得分:3)
如果您的输入例程如下所示:
std::string input;
std::cin >> input;
输入被读取到第一个空格字符。要阅读整行,您可以使用std::getline
。
std::getline(std::cin, input);
答案 1 :(得分:2)
因为您正在使用stdin
从cin >> stringvalue
读取字符串。 C ++ operator>>(istream, string)
在空白之后停止;它一次只读取一个以空格分隔的标记。
相反,请使用getline
:
std::getline(std::cin, stringvalue);