Hallo Ich schreibe ein kurzes Programm, um eine Shell zu implementieren, und ich stoße auf ein ungewöhnliches Problem. Aus irgendeinem Grund kann ich den std :: cout-Puffer nicht löschen. Das Programm druckt keine Nachrichten. Ich verstehe, dass eine einfache Lösung ist, zu std :: cerr zu wechseln, aber gibt es eine Möglichkeit, Nachrichten mit cout zu drucken? Dinge, die ich habe versucht habe:Löschen des Cout-Buffer (C++)
std::cout.flush()
- Einfügen
std::endl
nach etwas geschrieben zu Standard aus. - Einfügen eines
std::flush
in den Ausgabestrom std::cout.setf(std::ios::unitbuf);
was war etwas, das ich finden sollte, sollte die Ausgabe unbuffer.
Jede Hilfe sehr geschätzt wird hier ist mein Code:
int main()
{
//Tryed this to unbuffer cout, no luck.
std::cout.setf(std::ios::unitbuf);
std::string input;
//Print out shell prompt and read in input from keyboard.
std::cout << "myshell> ";
std::getline(std::cin, input);
//**********************************************************************
//Step 1) Read in string and parse into tokens.
//**********************************************************************
char * buf = new char[input.length() + 1];
strcpy(buf, input.c_str());
int index = 0;
char * command[256];
command[index] = std::strtok(buf, " "); //Get first token.
std::cout << command[index] << std::endl;
while (command[index] != NULL)
{
++index;
command[index] = std::strtok(NULL," "); //Get remaining tokens.
std::cout << command[index] << std::endl;
}
std::cout.flush(); //No luck here either
//HERE IS WHERE MY PROBLEM IS.
std::cout << index << " items were added to the command array" << std::endl;
delete[] buf;
return 0;
}
Es scheint, dass Sie alles versucht haben aufgeführt _ [hier] (http://stackoverflow.com/questions/36096103/clearing-the-cout-buffer-c) _. Sind Sie sicher, dass Ihre geposteten Beispiele mit Ihrem tatsächlichen Code übereinstimmen? Welche Umgebung (OS, Compiler) verwenden Sie? – ryyker
Dieses _ [link] (http://stackoverflow.com/a/13809766/645128) _ könnte helfen. "Cout" ist übrigens rein C++. Ich habe das C-Tag aus deinem Beitrag entfernt. – ryyker
Ich bin in einer Linux-Umgebung mit Geany codieren. Ich werde den Link durchsehen. Die Compileroptionen, die ich verwende, sind: g ++ -Wall -std = C++ 0x -c "% f" Erstellungsoptionen: g ++ -Wall -std = C++ 0x -o "% e" "% f " –