1

我忙于一个实用的。我必须输入一个字符串或一条消息,并且必须将其转换为摩尔斯电码:'A' = .- 'B' = -... ecs。

通过使用一系列 if 语句,我可以毫无问题地做到这一点。

for(int i = 0;i < stringvalue.length();i++)
{
    if(stringvalue == 'A')
        cout << ".-";
        //there is 26 if statements

}

但是当我输入一个字符串时,例如。

"Testing data"

只有字符串的第一部分被转换(测试被转换)为莫尔斯。

为什么它不转换空格后的部分。如果字符串中有空格,则必须输出“/”。

4

2 回答 2

3

如果您的输入例程如下所示:

std::string input;
std::cin >> input;

输入被读取到第一个空白字符。要阅读整行,您可以使用std::getline.

std::getline(std::cin, input);
于 2012-08-06T09:29:16.650 回答
2

因为您正在从stdinusing中读取字符串cin >> stringvalue。C++operator>>(istream, string)在空格后停止;它一次只读取一个以空格分隔的标记。

相反,使用getline

std::getline(std::cin, stringvalue);
于 2012-08-06T09:30:47.967 回答