C++ "Cin" komutu çalışmıyor

oynozan

Kilopat
Katılım
4 Eylül 2018
Mesajlar
2.988
Makaleler
2
Çözümler
33
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Yapmaya çalıştığım şey string olarak girilen ve aralarında boşluk olan sayıları toplamaya çalışmak. Yani; "1 2 3" olarak girersem sonuç olarak 1+2+3 yani 6 yazdırmasını istiyorum. cin >> s; komutu yerine string s = "1 2 3"; yazsam istediğim gibi çalışıyor. Anlamadığım neden Cin komutunun çalışmadığı. Kodun tamamı aşağıda:

C++:
#include <vector>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;


int main() {
    string s;
    cin >> s;
    vector <string> tokens;
    stringstream check1(s);
    string intermediate;
    int count = 0;
    string numbers_as_str[3];
    int numbers[3];
    while (getline(check1, intermediate, ' ')) {
        tokens.push_back(intermediate);
    }
    for(int i = 0; i < tokens.size(); i++) {
        numbers_as_str[count] = tokens[i];
        cout << tokens[i] << endl;
        count++;
    }
    count = 0;
    for(string num_str : numbers_as_str) {
        numbers[count] = atoi(num_str.c_str());
        count++;
    }
    int sumNumbers = 0;
    for (int num : numbers) {
        sumNumbers += num;
    }
    cout << sumNumbers;
    return 0;
}
Edit: Sorunu çözdüm arkadaşlar tamamıyla benim dokümantasyon okumaktaki üşengeçliğimden ve bilgisizliğimden kaynaklanıyor. cin komutu boşlukları falan dikkate almıyor sadece ilk kelimeyi alıyormuş. getline(cin, s) komutunu kullanınca çalışmaya başladı.
 
Son düzenleme:

Geri
Yukarı