1

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

4

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 回答