1

C++、Ubunt 12.04 では、 とconfig.txtを含むという名前のファイルがuser nameありますpassword。と の 2 つのpublic static string変数 がUSERありPASSWORDます。これは私のコードです:

// Read file from config
string text[2];
int count = 0;
while(!fin.eof()){
    getline(fin,text[count]);
    count++;
    if(count == 2){
        break;
    }
}
CONNECTOR::USER = text[0];
CONNECTOR::PASSWORD = text[1];

string userAndPassword =  CONNECTOR::USER + ":" + CONNECTOR::PASSWORD;
cout << CONNECTOR::USER << endl; // It's fine, right user: qsleader
cout << CONNECTOR::PASSWORD << endl; // ok, right password: 123456
cout <<"user and password: " <<  userAndPassword << endl; // It's weird text! Problem here!

奇妙なテキスト結果は次のとおりです:123456d password: qsleader。これは私が期待したものではありません!しかし、私はなぜこれが起こるのかわからないのですか?誰でも私に提案をすることができますか?(印刷した場合: cout << "user and password: qsleader:123456"、結果は良好です!!)!

4

2 に答える 2

2

値を読み取ると問題が発生します。確かに、あなたのファイルには 2 つの項目が 2 つの異なる行にあると思います。さらに、このファイルは Windows の行末を使用していると思います。したがって、最初の項目を読み取ると、次の抽出された文字が抽出され、文字列に追加されないため、読み取りqsleader\rが停止します。\n

文字列を作成するuserAndPasswordと、実際にはqsleader\r:123456. この特殊文字\rは帰りのキャリッジです。カーソルを行頭に移動させます。したがって、最後の行では、最初に を出力user and password: qsleaderし、次に最初の列に戻って を書き:123456、結果は になり:123456d password: qsleaderます。

于 2012-11-12T09:20:49.617 に答える
0

あなたはuserAndPassword割り当てを伴う地獄のような表現に設定しています。あなたの意図は次のとおりだったと思います:

string userAndPassword = CONNECTOR::USER + ":" + CONNECTOR::PASSWORD
于 2012-11-12T09:11:56.463 に答える