Прошу прощения за начальную запись. Это проверено и воспроизводимо.Odd Cout Behavior
Я пытаюсь получить COUT работать в fstream во время цикла при обнаружении каждого символа его синтаксического анализ, но он проявляет странное поведение с текстом получать перекрытый первыми переменный, которую я пытаюсь ввести в соиЬ.
main.cxx
#include <string.h>
#include <fstream>
#include <iostream>
#include <stdio.h>
using std::string;
using std::fstream;
using std::noskipws;
using std::cout;
int main(int argc, const char *argv[]){
char pipe;
string word; // stores the word of characters it's working on at the moment
string filename = "Directory.dat";
int type = 0; // 2 types counter, starts at 0
int newindicator = 0; // for detecting a new * for the data set
fstream fin(filename.c_str(), fstream::in);
while(fin >> noskipws >> pipe){
if(pipe == '*'){ // if the character is an asterisk
type++;
newindicator = 0;
word.clear();
}else if (pipe == '\n'){ // if the character is next line
if(newindicator == 0){ // tells the reader to know that it just finished reading a *, so it doesn't print anything.
newindicator = 1;
}else {
if(type == 1){
cout << "new word as: ";
cout << word << "\n";
}else if (type == 2){
cout << "new word as: ";
cout << word << "\n";
}
word.clear(); // clears the word string as it's reading the next line.
}
}else{
word+=pipe;
}
}
return 0;
}
Directory.dat
*
Chan
Johnathan
Joespeh
*
Betty
Lady Gaga
Выходной
Chanword as:
new word as: Johnathan
new word as: Joespeh
Bettyord as:
new word as: Lady Gaga
Обратите внимание, что, как "Чан" является переопределяя символы «новый» в первой строке, но после этого все в порядке. Это похоже на каждый новый тип, который я делаю, и когда он вызывает новый набор типов. То же самое с Betty на следующем наборе, который переопределяет «новый w» с «Betty» на этом cout.
Любая обратная связь будет очень признательна. Спасибо!
Ваш пример не воспроизводим. Кроме того, это, вероятно, не минимально. – user31264
Где произносится 'pipe'? Пожалуйста, напишите ** полный **, но минимальный пример. На данный момент голосование закрывается, поскольку отсутствует воспроизводимый пример. –
Невозможная причина для поведения, которое вы видите, заключается в том, что 'слово', которое должно содержать' 'Chan'' вместо этого содержит' '\ rChan'', то есть байт со значением 13 в начале. –