2016-12-20 16 views
-3

intをASCII値を使用してcharに変換しようとしています。 intは、97122aからzまで)の間でランダムに生成されます。intをcharに変換する(ASCII値)

97から122までの乱数を生成してcharに変換するにはどうすればよいですか?

私は質問をする前に多くの答えを探しましたが、問題を解決しなかったか、私の必要性に完全に関連していました。たとえthisでも動作しませんでした。

これは私がやろうとしていることです:forループでは、プログラムは乱数を生成し、intに変換します。これはASCII値に変換され、QStringに配置されます。 forループが終了すると、QStringline_editに送信します。

上記のリンクをたどって、私はmしか得ていません。ここで

は私のコードです:

QString str; 
int maxlenght = 16; //the user will be able to set himself the maxlenght 
for (int i =0; i<maxlenght; i++) 
{ 
    int random = 97 + (rand() % (int)122-97+1); 
    char letter = (char)random; 
    if(i > 0) 
    { 
     str[i] = letter; 
    } 
} 

そして、乱数をループ内で生成されるが、それはいつも私に同じ文字を提供します。

+2

/関連デュープ:http://stackoverflow.com/questions/19724346/generate-random-characters-in-c – NathanOliver

+0

私は前に私の質問への答えを検索するが、この1が見つかりませんでした。ありがとう、それを試してみましょう。 – Newokmyne

+0

私が望むようにうまく動作しません。 – Newokmyne

答えて

-1

その後、文字列をQStringに変換する必要があります。

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

int main() 
{ 
    string str=""; 
    int maxlenght = 16; //the user will be able to set himself the maxlenght 
    for (int i =0; i<maxlenght; i++) 
    { 
     int rand_num = 97 + (rand() % (122 - 97 + 1)); 
     char letter = static_cast<char>(rand_num); 
     str += letter; 
    } 
    cout << str << endl; 
    return 0; 
} 
+0

'(int)(122 - 97 + 1)'のキャストのポイントは何ですか? (なぜこの計算の実際の結果を使用していないのですか?) – UnholySheep

+1

非常に脆いです。 ASCIIでのみ動作します – NathanOliver

+0

@UnholySheep OPによって要求される乱数が生成される範囲[97,122]を示します。 Uは26の実際の値で置き換えることができますが、読者はその番号がどこから来るのか理解できないことがあります。 –

関連する問題