User Input Strings

در C++ برای دریافت ورودی متنی (رشته‌ای) از کاربر می‌توان از cin یا getline استفاده کرد. هر کدام ویژگی‌ها و نکات خاص خود را دارند.

🟠 C++ User Input Strings

🔹 1. گرفتن یک کلمه با cin

cin به طور پیش‌فرض تا اولین فاصله (space, tab, newline) می‌خواند.

#include <iostream> #include <string> using namespace std; int main() { string name; cout << "Enter your name: "; cin >> name; cout << "Hello " << name; return 0; }
  • ورودی: Ali Reza

  • خروجی: Hello Ali

بخش بعد از فاصله (Reza) خوانده نمی‌شود.

🔹 2. گرفتن یک جملهٔ کامل با getline

برای دریافت متن همراه با فاصله‌ها از ()getline استفاده کنید:

#include <iostream> #include <string> using namespace std; int main() { string fullname; cout << "Enter full name: "; getline(cin, fullname); cout << "Hello " << fullname; return 0; }
  • حالا ورودی Ali Reza به طور کامل ذخیره می‌شود.

🔹 3. ترکیب cin و getline

اگر قبل از getline از cin استفاده کرده باشید، کاراکتر \n باقی‌مانده در بافر باعث می‌شود getline بلافاصله یک رشتهٔ خالی بخواند.
برای رفع این مشکل از ()cin.ignore استفاده کنید:

int age; string fullname; cout << "Enter age: "; cin >> age; cin.ignore(); // پاک کردن کاراکتر \n باقی‌مانده cout << "Enter full name: "; getline(cin, fullname);

🔹 4. نکات تکمیلی

  • نوع ورودی: همیشه از std::string استفاده کنید تا مدیریت حافظه و طول رشته ساده باشد.

  • بررسی طول: می‌توانید با ()fullname.length طول رشته را پس از ورودی بسنجید.

  • برای ورودی چند خطی (مثلاً پاراگراف) می‌توانید در یک حلقه چند بار getline صدا بزنید.

✅ خلاصه

روشویژگی
cin >> varفقط تا اولین فاصله می‌خواند
getline(cin,x)کل خط را (با فاصله‌ها) می‌خواند
()cin.ignoreپاک کردن \n قبل از استفاده از getline پس از cin

با این روش‌ها می‌توانید ورودی متنی از کاربر دریافت کنید؛ از getline هر زمان که نیاز به خواندن رشته‌های چندکلمه‌ای دارید استفاده کنید.