Ĺadny brzuch
Witam, chodzi o to, że mam w pliku pewne liczby zapisane w taki sposób:
123
4568
789
101112
1415
...
i chciałbym je wszystkie po kolei zapisać do wektora, żeby otrzymać coś w rodzaju tablicy. Dodam, że koniecznie muszą być typu int, bo chce na nich potem robić operacje arytmetyczne, jednak nie wiem jak przeprowadzić konwersję z typu string do int. Proszę o pomoc.
std::ofstream plik("lp.txt");
int n;
std::cin >> n;
int i=3;
int x=0;
int ilosc=n - 3*n/4;
std::vector<int> w(ilosc); // wektor jest typu int
std::ifstream czytaj("lp.txt");
std::string zmienna; // zmienna bedzie oczekiwac ciagu znakowego
while(getline(czytaj,zmienna)){
std::cout << zmienna << "\n";
w[x]=zmienna; // chce moc przypisac wektorowi wartosc Zmiennej przekonwertowana na int
++x;
}
Proszę nie podawać alternatywnych rozwiązań, zależy mi tylko na zamianie typów coś w rodzaju strtoint.
Pzdr.
mASTEr
najprosciej co mi przychodzi do glowy:
- odczytujesz liczbe znakow, w ten sposob wiesz ile jest jednosci, dziesiatek, setek itd
- na podstawie tego znak po znaku odczytujesz cyfry (zamieniasz pojedyncze znaki na liczby) i odpowiednio mnozysz przez 1, 10, 100 itd, nak oncu wszystko sumujac
np.
"456"
4*100 + 5*10 + 6*1 = 456
i masz liczbe
Użytkownik fernandez edytował ten post 20 marzec 2009, 12:36
Do konwersji można wykorzystać np. std::stringstream (include <sstream>).
oo, mógłbyś pokazać przykład użycia tego stringstream'a?:)
Przykład użycia powyżej wspomnianego streamstream'a:
#include <iostream> #include <sstream> using namespace std; int main() { string liczba = "45"; int i; stringstream s; s << liczba; s >> i; cout << i << endl; cin.get(); }
Ja użyłbym do takiej konwersji funkcji sscanf:
#include <cstdio> #include <string> using namespace std; int main() { string liczba = "45"; int i; sscanf(liczba.c_str(), "%d", &i); printf("i: %d\n", i); getchar(); }
dziękuję baaaaaardzo :)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
123
4568
789
101112
1415
...
i chciałbym je wszystkie po kolei zapisać do wektora, żeby otrzymać coś w rodzaju tablicy. Dodam, że koniecznie muszą być typu int, bo chce na nich potem robić operacje arytmetyczne, jednak nie wiem jak przeprowadzić konwersję z typu string do int. Proszę o pomoc.
std::ofstream plik("lp.txt");
int n;
std::cin >> n;
int i=3;
int x=0;
int ilosc=n - 3*n/4;
std::vector<int> w(ilosc); // wektor jest typu int
std::ifstream czytaj("lp.txt");
std::string zmienna; // zmienna bedzie oczekiwac ciagu znakowego
while(getline(czytaj,zmienna)){
std::cout << zmienna << "\n";
w[x]=zmienna; // chce moc przypisac wektorowi wartosc Zmiennej przekonwertowana na int
++x;
}
Proszę nie podawać alternatywnych rozwiązań, zależy mi tylko na zamianie typów coś w rodzaju strtoint.
Pzdr.
mASTEr
najprosciej co mi przychodzi do glowy:
- odczytujesz liczbe znakow, w ten sposob wiesz ile jest jednosci, dziesiatek, setek itd
- na podstawie tego znak po znaku odczytujesz cyfry (zamieniasz pojedyncze znaki na liczby) i odpowiednio mnozysz przez 1, 10, 100 itd, nak oncu wszystko sumujac
np.
"456"
4*100 + 5*10 + 6*1 = 456
i masz liczbe
Użytkownik fernandez edytował ten post 20 marzec 2009, 12:36
Do konwersji można wykorzystać np. std::stringstream (include <sstream>).
oo, mógłbyś pokazać przykład użycia tego stringstream'a?:)
Przykład użycia powyżej wspomnianego streamstream'a:
#include <iostream> #include <sstream> using namespace std; int main() { string liczba = "45"; int i; stringstream s; s << liczba; s >> i; cout << i << endl; cin.get(); }
Ja użyłbym do takiej konwersji funkcji sscanf:
#include <cstdio> #include <string> using namespace std; int main() { string liczba = "45"; int i; sscanf(liczba.c_str(), "%d", &i); printf("i: %d\n", i); getchar(); }
dziękuję baaaaaardzo :)