Witam!
Do ruszenia z programem muszę wczytać dane(a konkretnie wyrazy) z pliku, które są pooddzielane przecinkami, i są w cudzysłowach, czy da się tak wczytać te dane żeby były od razu zapisane do zmiennej bez tych cudzysłowów i jak to mniej więcej zrobić?
Z góry dziękuję za pomoc!

- Rejestracja:ponad 11 lat
- Ostatnio:prawie 11 lat
- Postów:31
- Rejestracja:ponad 12 lat
- Ostatnio:prawie 9 lat
- Postów:45
Wszystkie dane są tak samo separowane ? w sensie dana","dana," ?

- Rejestracja:ponad 11 lat
- Ostatnio:prawie 11 lat
- Postów:31
jest "dana1","dana2","dana3" itd.

- Rejestracja:ponad 15 lat
- Ostatnio:4 minuty
W bibliotece standardowej nie ma (no chyba że wymyślili coś w C++11) możliwości przekazania informacji żeby omijać/wyrzucać jakieś znaki ze strumienia. Musiałbyś to zrobić ręcznie, tak jak napisał @_13th_Dragon czytając znak po znaku i omijać te znaki których nie potrzebujesz. Hm, być może w boost asio coś by się znalazło, ale też wątpię.
- Rejestracja:ponad 12 lat
- Ostatnio:prawie 9 lat
- Postów:45
Gotowe to tylko za pomocą boost: http://www.boost.org/doc/libs/1_55_0/libs/tokenizer/char_separator.htm albo ręcznie znak po znaku...

- Rejestracja:ponad 11 lat
- Ostatnio:prawie 11 lat
- Postów:31
Problem ze średnikami rozwiązany jest w dalszej części programu. :) A czytanie po przecinku to da się załatwić w getline nie?

- Rejestracja:ponad 19 lat
- Ostatnio:2 miesiące
several napisał(a):
W bibliotece standardowej nie ma (no chyba że wymyślili coś w C++11) możliwości przekazania informacji żeby omijać/wyrzucać jakieś znaki ze strumienia.
To nie zupełnie prawda scanf/fscanf może to i owo. Ale nie jest to rozwiązaniem w tym przypadku.


- Rejestracja:ponad 11 lat
- Ostatnio:prawie 11 lat
- Postów:31
Napisałem takie czytanie i nie działa, piszę pierwszy program z takim wczytywaniem.
int i=0;
string zmienna[10];
fstream plik;
plik.open("plik.txt", ios::in);
if(plik.good())
{
cout<<"otwarto plik"<<endl;
while(!plik.eof())
{
plik.getline(zmienna[i], 10, ",");
i++;
}
}
else
{
cout<<"blad"<<endl;
}
plik.close();
i biblioteki dołączone
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
.


- Rejestracja:ponad 19 lat
- Ostatnio:2 miesiące
No tak tylko mądrzy ludzi uczą się na cudzych błędach, chcesz pod górkę to proszę bardzo:
http://www.cplusplus.com/reference/string/string/getline/
Najpierw wczytuj za pomocą getline cały wiersz.
Potem wczytany wiersz ładuj do stringstream, a z niego czytaj za pomocą getline do przecinka i módl się aby nie trafił przypadkiem przecinek wewnątrz cudzysłowów.
Twój kod nie działa pomijając nieoprawne użycie getline i przecinek wewnątrz cudzysłowów dla tego że połączy ostatnią kolumnę z pierwszą kolumną następnego wiersza.
Znalazłem kawałek kody w C:
#include <stdio.h>
int main ()
{
int i,r;
char buf[1024];
for(i=0;scanf("\",\"%[^\"]s\""+(i?0:2),buf)==1;++i)
{
printf("%s\n",buf);
}
while(((i=getchar())!='\n')&&(i!=EOF)) printf("%c",i);
return 0;
}