我的cout怎么了

What wrong with my cout?

本文关键字:怎么了 cout 我的      更新时间:2023-10-16

在c 中,ubunt 12.04,我有一个名为 config.txt的文件,其中包含 user namepassword。我有2个public static string变量:USERPASSWORD。这是我的代码:

// 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",结果很好!!)!

读取值时会创建问题。确实,我想您的文件在两个不同的行上都有两个项目。此外,我猜该文件使用Windows行结尾。因此,当您读取第一项时,它会读取qsleaderr,然后在下一个提取的字符为 n时停止,然后提取但不附加到字符串上。

创建userAndPassword字符串时,实际上是qsleaderr:123456。这个特殊的角色r是返回马车。它使光标转到线的开头。因此,在最后一行中,您首先输出user and password: qsleader,然后返回第一列,然后编写:123456,导致:123456d password: qsleader

您将userAndPassword设置为涉及分配的地狱表达。我想你的意图是:

string userAndPassword = CONNECTOR::USER + ":" + CONNECTOR::PASSWORD