• 0

Newbie C++ Help


Question

Recommended Posts

  • 0

Dont know if its any use, or if its been found before, but IM not looking through 11 pages to see.

<link snipped--copyright infringement>

ITs the whole The

C+ +

Programming

Language

Third Edition

Bjarne Stroustrup

In PDF format XD.

Im using it atm.

Edited by John S.
  • 0

I thought I might add my input into this.

To get a good grounding on programming in general this book is a must read. It's a very tiny handbook as well, created by the founders of the C Programming Language.

Kernighan and Richie - The C Programming Language

It's aptly named as it is a no non-sense approach and tells very well how to make data structures, functions, arrays, and the basic functions of C. Though it took me a while to get my mind around a lot of the stuff written in the book. It all made picture perfect sense. It is a very System Engineering esque approach to programming, and they include the source code for the functions such as fgets, printf, and scanf.

I am learning C++ now, then moving onto C# after (After all, it is an exact copy of Java - Remade to have Microsoft brand on it).Another book was Data Structures and Algorithms with a picture of a waterfall on the front page, but that's for more advanced projects like Hash Tables, and AVL Trees.[That book got me full marks for my First Year University project].

I'm gonna start teaching myself PHP/C/C++ soon and this thread is surely going to help me, but I'm a fair bit older than alot of the people in this thread looking to get into it too (20 as of last month) and I currently really only know HTML well. I was wondering, how long did it take some of you to learn C/C++/PHP to a somewhat decent level from scratch?I'm curious how much time I might need to invest into learning. :)

From the start? Took me a 6 months to a year to get used to C Programming. Far from being a master - Haven't put the effort to become one.I guess you could say I am lost for inspiration to code. Don't know what to code.

  • 0

I'm not sure if this has been addressed, but if it has, feel free to delete this post.

Sometimes a newcomer in C++ can't figure out why after using something like cin >> value, something like cin.get(), which is supposed to wait for data to be entered, doesn't block input (doesn't wait for input) like it is supposed to. The answer is due to the fact that the input buffer that cin uses ends up not accepting the newline character that the Enter key uses when inputting data into variables. For example:

#include &lt;iostream&gt;

using namespace std;

int main () {
	int x = 40;

	cout &lt;&lt; "Enter an integer: ";
	cin &gt;&gt; x;
	cout &lt;&lt; x &lt;&lt; endl &lt;&lt; endl;

	cout &lt;&lt; "Press Enter to exit..." &lt;&lt; endl;
	cout &lt;&lt; cin.bad() &lt;&lt; cin.eof() &lt;&lt; cin.fail() &lt;&lt; endl;
	//cin.clear();
	//cin.sync();
	cin.get();
}

In that simple program, the cin.get() appears to be ignored. The same thing happens with variables of type bool, char, int, float, double, etc. There is a way around this problem, however. Just uncomment the commented lines in the above program and behold the difference! The first commented line clears the error bits, which is necessary because if they are not cleared then the cin.get() will notice the error from the previous read operation and will refuse to try doing an unsafe read. The second syncs the input buffer with the input stream, effectively discarding whatever extra characters are left in the input buffer.

Also note that this happens when doing the same thing with a string variable (an instance of the C++ string class, not a character array). However, it has a much safer solution - getline(cin, string_variable) instead of cin >> string_variable. It works by doing the same thing, except it discards the newline character. You can test this by using cout << string_variable.length() << endl; after using getline() and verifying that the number of characters you typed is the same as the string's length.

It is common for this same thing to happen in C with things like getchar() and scanf. C does not have any way to flush the input buffer, however. To accomplish this same thing, you might use something like while (getchar() != '\n');, or if you have a really crazy C compiler you could use while (getchar() != '\n') { continue; }, though I've never run into this type of thing personally.

I hope this helps people in the future!

  • 0
How different is C# from C++? I'm a beginner to programming, and want to go into C#, but I'm wondering if it'd be best if I learnt C++ first...
They just happen to have the same letter 'C'.

They are 2 completely different languages. C# is basically VB.NET (the functions are common, the same .NET framework) with a Java/C++ syntax and some of its features are taken from both Java and C++. C# for example can inherit from a class, not multiple like in C++ but you can have reference variables like in C++ but with a different syntax though.

  • 0

noob question.... why the below declaration is not good?

#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

class Str {
	public:
		Str(string *s) {
			this-&gt;x=s;
		};
		string getStr() {
			return this-&gt;x;
		}
	private:
		string x;
};

int main() {

	Str d = new Str("BOO");


	cout &lt;&lt; d.getStr() &lt;&lt; endl;
	return 0;
}

and how would a valid code look like :) ty in advance

  • 0
Str(string *s) {
			this-&gt;x=s;
		};

The problem is the fact that you are passing a pointer to a string, but you're trying to assign the pointer to the string. If that sounded confusing, it is -- pointers can be extremely confusing at times. You would need to dereference the pointer.

I recommend the following, though Seismo's solution works just as well:

Str(string const&amp; s) { //pass it by reference
			x=s;
		};

However, if you have your heart set on using a pointer, here is the corrected code:

Str(string *s) {
			x=*s;
		};

  • 0

I have to say, if anyone is really serious about getting into some C or C++ I would seriously consider installing a free operating system such as GNU/Linux or FreeBSD. Once you get really in to it you will want to look at some advanced code for examples... and what better code to look at than the very software you are using! And what better way to learn than to hack it to pieces! Plus GCC is great :D

And for C++, one you have your head around the syntax, pointers, templates etc. I thoroughly recommend this book: The C++ Standard Library by Nicolai M. Josuttis: http://www.amazon.co.uk/C-Standard-Library...553&sr=11-1 Great read, great reference and good way to learn how to use templates and generic programming.

  • 0
ANyone know how to add color to c programming?> I want to change the font color and background color

That's quite an ambiguous question. You can use ASCII or ANSI colour codes in some shells I think... I'm pretty sure it does not work on the standard windows shell any more but it works in bash I think... So already it's becoming platform dependent. Anything else is all platform dependent. If you want to have colour on a text UI then look into ncurses: http://ndk-xx.sourceforge.net/ If you want a GUI then there are many options like GTK.

  • 0

Hi:

I don't know if anyone mentioned this, but I'd be curious if someone could comment on using Codeblocks compared to Bloodshed DevC++ as a noobie IDE. I'm tempted to get a Microsoft Visual C++ but I'm concerned about proprietary lockin in that all I'd ever be able to do is program Windows.

Thanks for any replies.

Jojo

  • 0

can any1 pls help my...why i'm getting this error on compiling

multiple definition of `function(double, double, double, double, double)'

the function is only declared once and there is the code for it, only 1 instance of it is in the whole file...

I'm using CodeBlocks latest nightly build

  • 0

main file

#include "student.cpp"

int main() {

    Student *alin = new Student("Alin", "Bata", "1870513350037", 2008, 6, 3, 5, 8, 4, 9);

    alin-&gt;studentPrint();

    ofstream store ("studenti.txt");
    if (store.is_open()) {
        store &lt;&lt; alin-&gt;getNume() &lt;&lt; alin-&gt;getPrenume() &lt;&lt; alin-&gt;getMediaGenerala() &lt;&lt;
 alin-&gt;getCrediteObtinute() &lt;&lt; endl;
    }
    else cout &lt;&lt; "Unable to open file" &lt;&lt; endl;
    store.close();

    return 0;
}

student.cpp file

#include &lt;iostream&gt;
#include &lt;fstream&gt;

#include "student.h"

using namespace std;

//constructors
Student::Student() {
        this-&gt;nume = "";
        this-&gt;prenume = "";
        this-&gt;cnp = "";
        this-&gt;promotia = 0;
        this-&gt;grupa = 0;
        this-&gt;notaAnalizaMatematica = 0;
        this-&gt;notaProgramareC = 0;
        this-&gt;notaAlgoritmica = 0;
        this-&gt;notaBazeleInformaticii = 0;
        this-&gt;notaEngleza = 0;
        this-&gt;mediaGenerala = 0;
        this-&gt;crediteObtinute = 0;
};

int calculcredite(double notaAnalizaMatematica, double notaProgramareC, double notaAlgoritmica, 
double notaBazeleInformaticii, double notaEngleza);

Student::Student(string nume, string prenume, string cnp, int promotia, int grupa, 
double notaAnalizaMatematica, double notaProgramareC, double notaAlgoritmica, 
double notaBazeleInformaticii, double notaEngleza) {
        this-&gt;nume = nume;
        this-&gt;prenume = prenume;
        this-&gt;cnp = cnp;
        this-&gt;promotia = promotia;
        this-&gt;grupa = grupa;
        this-&gt;notaAnalizaMatematica = notaAnalizaMatematica;
        this-&gt;notaProgramareC = notaProgramareC;
        this-&gt;notaAlgoritmica = notaAlgoritmica;
        this-&gt;notaBazeleInformaticii = notaBazeleInformaticii;
        this-&gt;notaEngleza = notaEngleza;
        this-&gt;mediaGenerala = ((notaAnalizaMatematica + notaProgramareC 
+ notaAlgoritmica + notaBazeleInformaticii + notaEngleza) / 5);
        this-&gt;crediteObtinute = calculcredite(notaAnalizaMatematica, 
notaProgramareC, notaAlgoritmica, notaBazeleInformaticii, notaEngleza);
};

int calculcredite(double notaAnalizaMatematica, double notaProgramareC, 
double notaAlgoritmica, double notaBazeleInformaticii, double notaEngleza) {
    int temp = 0;
    if(notaAnalizaMatematica &gt;= 5) {
        temp = temp + 6;
    }
    if(notaProgramareC &gt;= 5) {
        temp = temp + 6;
    }
    if(notaAlgoritmica &gt;= 5) {
        temp = temp + 6;
    }
    if(notaBazeleInformaticii &gt;= 5) {
        temp = temp + 6;
    }
    if(notaEngleza &gt;= 5) {
        temp = temp + 6;
    }
    return temp;
};

//deconstructors

//get functions
double Student::getMediaGenerala(void) {
    return this-&gt;mediaGenerala;
};
int Student::getCrediteObtinute(void) {
    return this-&gt;crediteObtinute;
};
string Student::getNume(void) {
    return this-&gt;nume;
};
string Student::getPrenume(void) {
    return this-&gt;prenume;
};

//print class
void Student::studentPrint(void) {
    cout &lt;&lt; this-&gt;nume &lt;&lt; this-&gt;prenume &lt;&lt; this-&gt;cnp &lt;&lt; this-&gt;promotia &lt;&lt; this-&gt;grupa &lt;&lt; 
this-&gt;notaAnalizaMatematica &lt;&lt; this-&gt;notaProgramareC &lt;&lt; this-&gt;notaProgramareC &lt;&lt;
 this-&gt;notaAlgoritmica &lt;&lt; this-&gt;notaBazeleInformaticii &lt;&lt; this-&gt;notaEngleza &lt;&lt; 
this-&gt;mediaGenerala &lt;&lt; this-&gt;crediteObtinute &lt;&lt; endl;
};

student.h file //here is the class declared

#include &lt;string&gt;

using namespace std;

class Student {
    public:
        Student();
        Student(string nume, string prenume, string cnp, int promotia, int grupa, double notaAnalizaMatematica, 
double notaProgramareC, double notaAlgoritmica, double notaBazeleInformaticii, double notaEngleza);
        ~Student();
//get functions
        string getNume(void);
        string getPrenume(void);
        double getMediaGenerala(void);
        int getCrediteObtinute(void);
//print function
        void studentPrint(void);
    private:
        string nume;
        string prenume;
        string cnp;
        int promotia;
        int grupa;
        double notaAnalizaMatematica;
        double notaProgramareC;
        double notaAlgoritmica;
        double notaBazeleInformaticii;
        double notaEngleza;
        double mediaGenerala;
        int crediteObtinute;
};

ty

  • 0
At first, I didn't really though many people would reply, Thanks. First, I think I am going to get started with C then move on to C++ and maybe create my first program(thinking too far ahead). Oh yeah, I am also 13 and I figure this is the best time to learn since I am yuong and I will get materials better. Again, Thanks for everything.

Ok shouldn't you try learning Visual Basic first? I tryed learning other languages first like WPF and stuff like that, it never worked out for me because Visual Basic is the beginning for programming. I never understood how programming worked, until I learned a little Visual Basic, which would help you learn the next programming language. Well I know this post is old, but it also is still valid for asking this question.

  • 0

I know I'm a little (very) late in this thread, but...

C++ is old! move to Java! it's much much better!

And better yet, focus on internet technologies, PHP or JSP or JSF and AJAX/CSS/XHTML

It's more fun than the old boring languages!

w3schools.com one of the best sources for most of them!

Edited by nonick
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • NetSpeedTray 1.3.3 by Razvan Serea NetSpeedTray is a lightweight, open-source Windows network monitor that shows live upload and download speeds directly on the Taskbar. Designed for efficiency, it quietly sits in the system tray, conserving CPU and battery with dynamic updates. It blends seamlessly with Windows 10/11, adapts to light/dark themes, and auto-positions to avoid overlaps. Features include accurate interface detection, customizable display, optional mini-graph, color coding, granular font and unit control, detailed per-interface history graphs, safe data management, and easy CSV export—bringing the network monitoring Windows forgot. NetSpeedTray key features: Lightweight & Efficient Runs quietly in your system tray without consuming resources. Features a "Dynamic Update Rate" that lowers refresh frequency when the network is idle to save CPU and battery life. Native Look & Feel Blends seamlessly with Windows 10/11 UI. Smart detection for light and dark taskbar themes ensures text is always visible. Intelligent & Adaptive Positioning Automatically finds empty space next to your system tray and shifts to make room for new icons, preventing overlaps. Seamless OS Integration Behaves like a native Windows component. Hides instantly with auto-hiding taskbar Hides when a fullscreen app is active Smart Network Monitoring Accurate by Default: Auto mode identifies your main internet connection and ignores noise from VPNs or virtual adapters. Easy Interface Selection: Switch effortlessly between Auto, All, or Selected network interfaces via intuitive radio buttons. Total Visual Customization Free Move Mode: Unlock and place the widget anywhere on your screen. Optional Mini-Graph: Real-time graph of recent network activity with adjustable opacity. Color Coding: Customize colors and speed thresholds to quickly see network status. Granular Display Control Text & Font: Adjust font family, size, weight, and alignment. Units: Automatic (B/s, KB/s, MB/s) or fixed Mbps display. Precision: Set decimal places and always show them for uniform appearance. Detailed & Intelligent History Graph Smart Scale: Logarithmic scale shows low-level traffic and large spikes clearly. Per-Interface Filtering: View speed history for specific adapters (Wi-Fi, Ethernet, VPN). Safe & Efficient Data Management: Adjustable retention, automatic cleanup, optimized database. Easy Data Export: Export raw data to .csv or save high-quality graphs for reports. NetSpeedTray v1.3.3: The Updater Fix A stabilization release that repairs a critical regression in v1.3.2: the app shipped without OpenSSL, which silently broke every HTTPS request — including the built-in update checker (the "Could not check for updates" error many of you hit). This release restores it, hardens the build so it can't happen again, and fixes a startup crash plus four other reported bugs. Changes: Fixed update checking — Resolved a critical issue that prevented the app from checking for updates ("Could not check for updates"). Fixed startup crash with Auto-Cycling — The app no longer crashes on launch after enabling Cycle display mode. Fixed incorrect network speeds on 10GbE adapters — Multi-gigabit network cards now display speeds correctly instead of being stuck at 0. Improved color coding — Default color is shown when idle, and color/threshold changes now apply immediately without restarting. Fullscreen visibility fix — The widget now correctly stays visible over fullscreen apps when Keep Visible is enabled. Improved AMD Ryzen temperature detection — More reliable CPU temperature monitoring for Ryzen processors. Cleaner upgrades — Installer now removes outdated application files during upgrades, preventing DLL/version conflicts while preserving user settings. Improved stability — Fixed potential DLL loading issues by excluding critical OpenSSL and NumPy components from UPX compression. Better settings window — Scrollbars removed and layout improved for a cleaner experience. Localization improvements — Updated translations and completed missing UI text across all supported languages. More reliable releases — Added regression tests covering recent critical fixes, bringing the test suite to 196 passing tests. [full release notes] Download: NetSpeedTray 1.3.3 | 87.9 MB (Open Source) Download: NetSpeedTray Portable | 101.0 MB View: NetSpeedTray Home Page | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Why Delta Chat is the best decentralized messenger you have probably never tried by Paul Hill There is no shortage of messaging apps out there; we have WhatsApp, Messenger, and Telegram, just to name a few. While Meta has taken steps to incorporate encryption into Messenger and WhatsApp, they still leave a lot to be desired. If you are in the market for a messaging app that promotes security, privacy, and optional anonymity, you'll want to read what I have to say about Delta Chat. For those not familiar with Delta Chat, rather than relying on centralized servers as you do with Facebook Messenger, it relies on email. Essentially, it is a chat interface that feels like a messaging app, but secretly in the background, it is firing off emails. In the past, you used to have to sign in with your email account. When you sent messages to people, it would just be sending encrypted messages to their inbox, which their Delta Chat client would decrypt. When I first learned about Delta Chat, it required users to sign in with an email account, but I was pleasantly surprised upon trying it in 2026 that this is no longer a requirement, or the preferred method was to use the app. Recently, I’ve tried UAD-ng on my old Nokia 3.4 to disable most of the Google apps because the bootloader is locked, and this is the next best option. While finding replacement apps in F-Droid, I came across Delta Chat again, and it has undergone quite a big change since I last used it, with its new chatmail relays, which no longer require you to sign in to your own email account, providing anonymity, and they offer greater security. Android and Desktop Delta Chat apps. Not only does it run on my de-googled phone, but it also works on desktop computers and iOS, making it truly ubiquitous. For me, Delta Chat is a wonderful alternative messenger because it gives you more control. It supports switching between different profiles, which you can set up super quickly; you don’t register a username, you don’t register a password. The only thing you do have is a random string email address on a chatmail relay (which you don’t have to memorize). To maintain access to your profile, you just need to add a second device to your account via QR code or make a backup of your account, which you can restore later. Fail to do these, your account is gone - as it should be if you don’t want to leave accounts that could get hacked later on. My decision to block Google stuff on my Nokia was done for practical reasons; the device sucked when it launched, and it sucks even more now. The nice thing about F-Droid and the apps within is that they’re usually lightweight, free of bloat, and work well on that device. What was inconvenient for me was that it was hard to send messages from that device, say if I wanted to copy a code over to my main phone or send family members a link from that device. That’s when I decided to look at the available chat apps and saw Delta Chat. Another nice thing about Delta Chat is its notifications. Some messaging apps rely on Google’s ecosystem for notification transport on Android; however, with Delta Chat, it can use Google’s solutions if you have Play Services or MicroG installed. Otherwise, it is able to keep a background connection to the chatmail relay server so that you can get notified when you receive a message. As free software, the code of Delta Chat is open for all who want to take it and build upon it. In the future, if the developers of Delta Chat make a catastrophically bad decision and take the app in an undesirable direction, users can take the code and fork the project. This contrasts with closed-source apps from corporations that can take their products in any direction they like. By relying on free software instead of closed-source programs, you actually control your computing. I’ve spoken at length about how running this type of software is like owning your own home rather than renting it. The same applies here; if you use Delta Chat, you don’t need to worry about it going away in the future. Whether it is Telegram, WhatsApp, or Messenger, you are required to register a username and password to use these services. A major flaw in this design is that anyone can try various passwords and potentially break into your account with your complete chat history intact. Sure, there is encryption in Messenger, where you need a second PIN and two-factor authentication in Telegram, but breaches happen all the time. Unlike before, when you used to sign in to your email account to send and receive messages, the primary way to do it now is to create an account on a chatmail relay. The resulting email address is a random string followed by the name of the relay you pick. This means you can start and begin adding contacts Without a username and password, you either need to ensure you have a backup or at least one device running your Delta Chat profile. The primary way to log in on another device is to go to the settings and add a second device. Then, you’ll just scan a QR code with your new device, and it’ll log in to your account and sync all your chat history and contacts. To end users, Delta Chat just looks like any instant messenger; however, it is really sending your messages as encrypted emails to your contact. This is pretty cool from a censorship perspective, as it makes the service more difficult to block. Previously, the main way to use the app was by logging in with email, but nowadays, it’s recommended that you use chatmail relays. Chatmail relays temporarily hold messages in case your device is offline. They are cheap, simple servers that don’t store data as group states. Other information, like your name and avatar, only exists on your device and the devices of those you share your contact information with. The relays are also decentralized and operated by various groups and individuals. It is even possible to set up your own chatmail relay, but most people will want to use one hosted elsewhere. To keep your messages secure, Delta Chat uses a secure subset of the OpenPGP standard that gives you automatic end-to-end encryption. It also uses Secure-Join to exchange encryption setup information through QR-code scanning or invite links. Autocrypt is also used to automatically establish end-to-end encryption between contacts and all members of group chat, but sometime this year Autocrypt v2 will be rolled out, bringing post-quantum resistant encryption and forward secrecy. The Delta Chat FAQ is an interesting read that explains many more details about the app. Credit: Pexels Delta Chat is unique among messaging apps because it is built on email, a technology that’s decades old and isn’t going anywhere soon. What’s more is that email is not centralized either, so it’s far more difficult for any authoritarian regime to disrupt the Delta Chat app. I haven’t spoken too much about features yet, so I will do that now. Delta Chat allows you to do one-on-one chats, group chats, and create channels. It also supports file sharing and making audio and video calls when chatting one-to-one, but it’s not available for group chats right now. At the time of writing, the calling functionality is disabled and can be enabled in Settings > Advanced > Debug Calls. I have used the video calling feature, and the quality is excellent. It works over WebRTC, another open standard. The app also lets you send voice notes, enables disappearing messages, and has its own app ecosystem. I did try playing chess one time there, but it was a bit spotty; though, we did manage to complete the game with a victory for me. To add people to Delta Chat, you can either give them your Delta Chat link or your QR code to scan. These are the only ways to add users, so you won't have any spam bots bothering you. If the people you want to chat with don't have the app yet, just send them your link, and it will take them to a webpage where they can install the app and then add you. It's really quick for them to install it and get started, which is nice. Credit: Microsoft. The Majorana 2 quantum chip unveiled in 2026. I do not think quantum computers are too far out now, and I do hope that Delta Chat is able to push out Autocrypt v2 sooner, rather than later, so bad actors do not attempt to collect encrypted communications and then decrypt them in the future using quantum computers. By getting people’s messages post-quantum-safe now, users won’t have to worry when quantum computers start cracking legacy encryption. Overall, I would recommend this app to people who are already past WhatsApp and Messenger and have perhaps begun using apps like Telegram or Session. It shares a lot of characteristics with these apps and goes a lot further than Telegram in terms of security. By being based on email, it is also resistant to censorship, and the lack of a username and password makes you anonymous (if you want to be) and safe from brute force password cracking attempts. Let me know in the comments if you’ve tried Delta Chat recently. Do you think it's a good bulwark against governments that are tightening their grip on the internet?
  • Recent Achievements

    • One Year In
      bernmeister earned a badge
      One Year In
    • Week One Done
      Scoobystu earned a badge
      Week One Done
    • Week One Done
      tuben earned a badge
      Week One Done
    • First Post
      OffsetAbs earned a badge
      First Post
    • Reacting Well
      OffsetAbs earned a badge
      Reacting Well
  • Popular Contributors

    1. 1
      +primortal
      471
    2. 2
      +Edouard
      217
    3. 3
      PsYcHoKiLLa
      156
    4. 4
      Steven P.
      73
    5. 5
      FloatingFatMan
      71
  • Tell a friend

    Love Neowin? Tell a friend!