Что не так с моим кутом?

В 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", результат хороший !!)!

1

Решение

Проблема создается, когда вы читаете значения. На самом деле, я предполагаю, что ваш файл содержит две позиции в двух разных строках. Кроме того, я предполагаю, что этот файл использует окончания строк Windows. Поэтому, когда вы читаете первый элемент, он читает qsleader\r и затем останавливается, поскольку следующий извлеченный символ \nизвлечено, но не добавлено в строку.

Когда вы создаете userAndPassword строка, это на самом деле qsleader\r:123456, Это особый характер \r это возвратный вагон Это заставляет курсор перейти к началу строки. Поэтому в последней строке вы сначала выводите user and password: qsleader, затем вернитесь к первому столбцу и напишите :123456, в результате чего :123456d password: qsleader,

2

Другие решения

Вы устанавливаете userAndPassword к адскому выражению с участием заданий. Я предполагаю, что ваше намерение было:

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector