2017-12-08 23 views
-3

文字列に5つの整数を格納しようとしていますが、問題があります。ここでは、コードは次のようになります。文字列に複数の整数を格納する

for (int a = 0; a < 5; a++) 
     { 
      string ans; 
      int number; 
      int num; 
      number = rand() % 9 + 1; 
      cout << number << " "; 
      num = number; 
      to_string(num); 
      ans =+ num; 
     } 

基本的に、私は「12345」の線に沿って何かする「ANS」を好むだろうが、私はそれを実行すると、それが何かを表示または疑問符で5箱を示していませんかそれらの内部に。どんな助け?

+1

あなたは終わっていますが、 'ans + = to_string(num);'が必要です。 –

+0

あなたが見ていると主張している 'ans'の値を表示できるコードはここには1行もないので、実際に何かを表示することができない、この明らかに偽のコードではなく、実際のコードを表示してください。さらに、 'ans'の値はループの繰り返しごとに破棄されます。あなたが偽のコードに反応して得られるのは、偽の答えだけです。 –

+0

多くの問題はまず 'to_string(num)'は何もしません。 'ans + = to_string(num)' 'ans'はif文の前にあるべきです。 –

答えて

0

あなたはこのような何かを行うことができます。

あなたのコードに問題がいくつかあります
string ans; 
int number; 

for (int a = 0; a < 5; a++){ 
    number = rand() % 9 + 1; 
    ans += to_string(number); 
} 
cout << ans; 
+0

実際、私のために働いたのはans = ans + to_string(num)でした!ありがとうございました! – zhodges10

+1

'ans = ans + to_string(num) 'より' ans + = to_string(num) 'が優先されます –

0

to_string()は文字列を返します。 あなたは、単にやって試すことができます。 ans += to_string(num);

をあるいは、改善された読みやすくするためにコードを書くためのより良い方法は、番号を格納する代わりにint numの一時的な文字列変数を使用することです。

string temp; 
    string ans; 
    for (int a = 0; a < 5; a++) 
    { 
     //string ans; 
     int number; 
     //int num; 
     number = rand() % 9 + 1; 
     cout << number << " "; 
     //num = number; 
     temp = to_string(number); 
     ans += temp; 
    } 

あなたはそれが再び宣言しますように、ループを実行するたびに、あなたはansはもう以前の値を保持していますので、forループの中にあなたstring ansを宣言する必要はありません。

0

  • ansをループ内に宣言しているため、ループの繰り返しごとに作成され、破棄されます。ループで5つの数字をansに追加する場合は、代わりにループの外に宣言する必要があります。

  • std::to_string()は、戻り値として新しいstd::stringを出力します。あなたのコードが想定しているように、入力値を文字列型に「魔法のように」変換することはありません。返された文字列をansに一切追加していません。

  • =+は有効な追加演算子ではありません。別の演算子=+と解釈されます。 std::stringには演算子がありません。これは入力としてintを持ち、単項演算子+を持ちません。代わりに+=演算子を使用する必要があります。

これを試してみてください:

#include <string> 
#include <iostream> 

std::string ans; 
for (int a = 0; a < 5; ++a) 
{ 
    int number = ... 
    ... 
    ans += std::to_string(number); 
} 
// use ans as needed... 

また、std::to_string()の代わりにstd::ostringstreamを使用する:あなたが明確に使用している、と述べたことで

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

std::ostringstream oss; 
for (int a = 0; a < 5; ++a) 
{ 
    int number = ... 
    ... 
    oss << number; 
} 
std::string ans = oss.str(); 
// use ans as needed... 

C++ 11(std::to_string()を導入した場合) Cの乱数ジェネレータの代わりにC++乱数ジェネレータを使用する必要があります。

#include <random> 

std::random_device rd; 
std::mt19937 gen(rd()); 
std::uniform_int_distribution<> dis(1, 9); 

for (int a = 0; a < 5; ++a) 
{ 
    int number = dis(gen); 
    ... 
} 
+0

' = + 'は有効ですが2つの別個の演算子として解析されます –

関連する問題