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

stdinを使用して文字列を読み取っているためですcin >> stringvalue。C++operator>>(istream, string)は空白の後に停止します。一度に 1 つのスペースで区切られたトークンのみを読み取ります。

代わりに、次を使用しますgetline

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