# 2. C++ Basics: Essential Differences from C

### 2.1 Basic Syntax Differences

**C vs C++ Comparison:**

| Feature | C | C++ |
|---------|---|-----|
| **File Extension** | `.c` | `.cpp` |
| **Input/Output** | `scanf()`, `printf()` | `cin`, `cout` |
| **Header Files** | `#include <stdio.h>` | `#include <iostream>` |
| **Namespace** | Not used | `using namespace std;` |
| **Comments** | `/* */` and `//` | `/* */` and `//` (preferred) |
| **Boolean Type** | `int` (0/1) | `bool` (true/false) |
| **String Type** | `char[]` | `string` class |

### 2.2 Hello World Comparison

**C Program:**
```c
#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}
```

**C++ Program:**
```c
#include <iostream>
using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}
```

### 2.3 Input/Output in C++

**Basic I/O Operations:**

```c
#include <iostream>
using namespace std;

int main() {
    int age;
    string name;
    float height;
    
    // Output (cout with insertion operator <<)
    cout << "Enter your name: ";
    
    // Input (cin with extraction operator >>)
    cin >> name;
    
    cout << "Enter your age: ";
    cin >> age;
    
    cout << "Enter your height (m): ";
    cin >> height;
    
    // Multiple outputs
    cout << "Name: " << name << endl;
    cout << "Age: " << age << " years" << endl;
    cout << "Height: " << height << " meters" << endl;
    
    return 0;
}
```

**C vs C++ I/O Comparison:**

| Operation | C | C++ |
|-----------|---|-----|
| Output integer | `printf("%d", x);` | `cout << x;` |
| Output float | `printf("%.2f", x);` | `cout << fixed << setprecision(2) << x;` |
| Output string | `printf("%s", str);` | `cout << str;` |
| Input integer | `scanf("%d", &x);` | `cin >> x;` |
| Input string | `scanf("%s", str);` | `cin >> str;` |
| Multiple inputs | `scanf("%d %d", &a, &b);` | `cin >> a >> b;` |

**Reading a Full Line:**
```c
#include <iostream>
#include <string>
using namespace std;

int main() {
    string fullName;
    
    cout << "Enter your full name: ";
    getline(cin, fullName);  // Reads entire line including spaces
    
    cout << "Hello, " << fullName << "!" << endl;
    return 0;
}
```

**Important Note on cin Buffer:**
```c
int age;
string name;

cin >> age;          // User enters "25" and presses Enter
// Buffer now contains the newline character

cin.ignore();        // Clear the newline from buffer
getline(cin, name);  // Now can read full line properly
```