Here is a program. Its only purpose is to delete the line printed, after some user input.
main.cpp
#include <iostream>
#define ESC_PREV_LINE "\e[F"
#define ESC_CLEAR_TO_END "\e[K"
int main(){
int i;
std::cerr << "Some input to clear: " << std::flush;
std:: cin >> i;
std::cerr << ESC_PREV_LINE ESC_CLEAR_TO_END << std::flush;
}
Inside Xcode, if the user were to input 2, this is the output:
Some input to clear: 2
[F[KProgram ended with exit code: 0
If compiled in terminal, using: g++ -std=c++20 main.cpp -o test, the output is cleared after user input, right before the program exists, and the shell looks like the program never ran.
How can I include this functionality within Xcode? I am writing a program that requires it, but developing inside Xcode, and it would be highly inconvenient to have to swap to the terminal just to test my program output.
Related
I have tried updating my g++ installation but there has been no solution.
Here is the code.
#include <iostream>
using namespace std;
#include<string>
#include <cstring>
int main()
{
char str[100];
cout << "Enter a string: ";
cin>>str;
cout << "You entered: " << str << endl;
cout << "\nEnter another string: ";
cin>>str;
cout << "You entered: "<<str<<endl;
return 0;
}
The output that this code shows is:
Check the terminal
Please give me a solution or at least a reason for this. I am new to Stack Overflow so please free to correct me if I made any mistake in the post. [This problem only happens in vs code but works in online gdb compiler.]
Edit:After I tried executing this in the cmd line this what it shows
cmd line execution
The output you're seeing is from some kind of makefile. You didn't say how you're trying to build the file so it's hard to say what caused the issue.
However, you can simply compile your file directly by typing g++ hgg.cpp -o hgg in the command shell
After writing the code, switch to Command Prompt (Cntrl + x) move to the directory, in which the C++ program is present.
Then run the following:
g++ -Wall filename.cpp -o filename
If nothing is printed on the console, then your code is syntactically correct. Then do the following:
filename.exe
It should work now.
Using Xcode with c++ I'm trying to create a simple console application. However my usage of cout and cin does not seem to work as I intend it to.
I'm expecting:
Testing: 12
input was 12
edit: i've cut down the code test as much as I can:
#include <iostream>
int main(int argc, const char * argv[]) {
// insert code here...
int num;
std::cout << "Testing: ";
std::cin >> num;
std::cout << "input was " << num << std::endl;
return 0;
}
Sample output:
12
Testing: input was 12
Program ended with exit code: 0
Is there something I'm missing here?
Apparently is a specific problem with C++ streams, in Xcode debugger, Debug build.
Try this:
1. Project -> Edit Active Target ...
2. Search for "preprocessor" in Build
3. Delete the values:
Preprocessor Macros = _GLIBCXX_DEBUG=1 _GLIBCXX_DEBUG_PEDANTIC=1
I found a similar issue but for Xcode 3.2.1 and C++ string fails!
You can try also this workaround:
Paste these lines at the very beginning of your program (before any #include statements):
#define _GLIBCXX_FULLY_DYNAMIC_STRING 1
#undef _GLIBCXX_DEBUG
#undef _GLIBCXX_DEBUG_PEDANTIC
During debugging Eclipse doesn't "see" INPUT from built-in console, just ignores it. Simple example:
#include <iostream>
using namespace std;
int main() {
int a;
cin >> a;
cout << a << endl;
cin >> a;
cout << a << endl;
return 0;
}
works perfectly fine when just run, but when I try to debug it, first "data on input"(?) is always a number around 40, and only zeros next, no matter what i will write to console.
So program executes, first variable is set to ~40 and all next to zeros.
Output works fine, values are written to console, only input doesn't work.
I work on Windows 10 and use MinGW.
Thanks in advance.
#EDIT
Everything works, when I use native Windows console
(.gdbinit file with set new-console on line)
I am using g++ version 4:4.8.2-1ubuntu6 with Eclipse 3.8 on Linux Mint.
Following example from my C++ book does not work as expected:
//bondini.cpp -- using escape sequences
#include <iostream>
int main()
{
using namespace std;
cout << "\aOperation \"HyperHype\" is activated\n";
cout << "enter sercret code:________\b\b\b\b\b\b\b\b";
long code;
cin >> code;
cout << "\aYou entered: " << code << "...\n";
cout << "\aCode OK! Commencing Z3!\n";
return 0;
}
I get following result when running the program:
In Eclipse and directory I am using UTF-8 encoding. Why does not '\a' play sound as it should and '\b' does not move the cursor one space back, while '\n' works properly.
edit: As I understand it, it is the compiler that makes the mess of it. --> I was wrong, in terminal it works fine, but eclipse 'terminal' does not work.
Wherever you are sending your output. What the destination does with it is entirely in its own hands. So while eclipse might not support these special characters your terminal should.
Here is my c++ code to read an integer, double it and then print it out on the screen:
#include
<iostream>
int doubleNumber(int x) { return 2 * x; } int main() { using namespace std; int x; cin >> x; cout
<< doubleNumber(x) << endl; return 0; }
I am compiling it using:
g++ -o example9 example9.cpp
It seems it is fine and it creates the object file but it is impossible to run the file using the following command:
./example9
In fact it does nothing (not even an error message)
What I am doing incorrectly?
Your help is appreciated.
When you say it is "impossible to run the file", I expect you are seeing something like the following:
$ ./example9
_
where I have indicated the cursor position with _ (just sitting there, on the next line, not doing anything except blinking). In this case, your program is running fine. It is waiting for you to type a number (the cin >> x statement). Type a number and press Enter.