ďťż

Ł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
  •