在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"
,结果很好!!)!
答案 0 :(得分:2)
读取值时会产生问题。实际上,我猜你的文件在两个不同的行上有两个项目。此外,我猜这个文件使用Windows行结尾。因此,当您阅读第一个项目时,它会显示qsleader\r
然后停止,因为下一个提取的字符为\n
,已提取但未附加到字符串中。
创建userAndPassword
字符串时,实际上是qsleader\r:123456
。这个特殊字符\r
是一个回程车。它使光标移动到行的开头。因此,在最后一行,您首先输出user and password: qsleader
,然后返回第一列,并写入:123456
,结果为:123456d password: qsleader
。
答案 1 :(得分:0)
您正在将userAndPassword
设置为涉及作业的地狱般的表达。我想你的意图是:
string userAndPassword = CONNECTOR::USER + ":" + CONNECTOR::PASSWORD