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.
Edit: Sorunu çözdüm arkadaşlar tamamıyla benim dokümantasyon okumaktaki üşengeçliğimden ve bilgisizliğimden kaynaklanıyor.
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;
}
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: