1

この質問で私が直面している問題があります:「スペースで区切られた1行でキーボードから5つの整数値を受け入れるC ++コンソールプログラムを作成します。プログラムはポインタを使用して5つの値を配列に格納します。次に、配列の要素をに出力します。スクリーン 。"

文字列変数を作成し、ユーザーから5つの整数を受け入れてから整数に変換しようとしましたが、スペースの後に数字を受け取らないため、うまく機能しません。

助けてくれる人は??

#include<iostream>
#include<string>
#include<sstream>

using namespace std;

int main(){
    string numbers;
    getline(cin, numbers);
    int arr[5];
    int *ptr;
    int values;
    stringstream convert(numbers);
    convert >> values;
    cout << values;


}
4

3 に答える 3

0

成功しました

#include<iostream>
#include<string>
#include<sstream>
using namespace std;

int main(){
int arr[5];
string number;
cout << "Please enter 5 integers separeted with spaces " << endl;
getline(cin, number);
int *ptr = arr ;
stringstream convert(number);
convert >> *ptr++ ;
convert >> *ptr++;
convert >> *ptr++;
convert >> *ptr++;
convert >> *ptr++;

for(  int i = 0; i < 5; ++i )
{
  cout << arr[i] << " " ;
}
cout << std::endl ;
}
于 2013-03-08T19:12:44.240 に答える
0

一度に1つだけかかります。次のように変換するには、さらに呼び出しを追加する必要があります。

  stringstream convert(numbers);
  convert >> values;
  cout << values;
  convert >> values;
  cout << " " << values;
  convert >> values;
  cout << " " << values;

C ++に関するよくある質問には、これに関する優れたセクションがあります。

大きな変更を加えることなく、ポインタを使用して数値を配列に直接配置する必要がある場合は、次のように実行できます。

int *ptr = arr ;

convert >> *ptr++ ;
convert >> *ptr++;
convert >> *ptr++;
convert >> *ptr++;
convert >> *ptr++;

for( unsigned int i = 0; i < 5; ++i )
{
  cout << arr[i] << " " ;
}
cout << std::endl ;
于 2013-03-08T18:34:08.517 に答える
0

数値変数は文字列であり、最初の非スペース文字を使用して検索し、最初のスペース文字を使用numbers.find_first_not_of(" ");
numbers.find_first_of(" ");
てサブセットを作成しsubstr(.....)
、substrを別の文字列変数に配置します。
次に、部分文字列をintに変換します。
必要な回数だけ手順を繰り返します。つまり、コード全体をwhileループ内に配置します。戻る
たびにループを終了しますnumbers.find_first_of(" ");numbers.end()

于 2013-03-08T18:37:29.483 に答える