bugfix> c++ > 投稿

これは私の元のコードでした:

#include <iostream>
void printArrayValues(int x, int y)
{
    std::cout << x << std::endl;
    std::cout << y << std::endl;
}
int main()
{
    int myArray[2];
    std::cout << "Please enter what you want the first element in 'myArray' to be: ";
    std::cin >> myArray[0] >> std::endl;
    std::cout << "Please enter what you want the second element in 'myArray' to be: ";
    std::cin >> myArray[1] >> std::endl;
    printArrayValues(myArray[0], myArray[1]);
    return 0;
}

私は自分のエラーを調べましたが、それは私が #include <string> しなかったからだと言いました 。宣言されている文字列がないため、これに混乱しましたが、先に進んで #include とにかくそれを編集しました。それはそれを修正したように見えたが、私が戻ってきたとき、同じエラーが戻ってきた。ここに私の新しいコードがあります:

#include <fstream>
#include <iostream>
#include <istream>
#include <string>
void printArrayValues(int x, int y)
{
    std::cout << x << std::endl;
    std::cout << y << std::endl;
}
int main()
{
    int myArray[2];
    std::cout << "Please enter what you want the first element in 'myArray' to be: ";
    std::cin >> myArray[0] >> std::endl;
    std::cout << "Please enter what you want the second element in 'myArray' to be: ";
    std::cin >> myArray[1] >> std::endl;
    printArrayValues(myArray[0], myArray[1]);
    return 0;
}

エラーはまだ表示されているため、まだ修正されておらず、どうすればよいかわかりません。誰かがそれを修正する方法を教えて、その特定の修正が機能する理由を説明できますか?ありがとう!

回答 1 件
  • std::cin >> myArray[0] >> std::endl;
    
    

    正しくありません。 std::endl  出力ストリームでのみ機能することを意図しています。例:

    std::cout << myArray[0] << std::endl;
    
    

    改行文字まですべてをスキップする場合は、 std::istream::ignore() を使用します  1

    std::cin >> myArray[0];
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    
    

    ただし、あなたの場合、 operator>> のように、それは必要ありません  デフォルトで先頭の空白を無視します( std::noskipws を使用しない限り )、改行を含む。単に使用できます:

    std::cout << "Please enter what you want the first element in 'myArray' to be: ";
    std::cin >> myArray[0];
    std::cout << "Please enter what you want the second element in 'myArray' to be: ";
    std::cin >> myArray[1];
    
    

    1std::cin.ignore() を使用することにした場合 、 追加

    #include <limits>
    
    

    std::numeric_limits の定義を取得する 。

あなたの答え