webForumDet fria alternativet

Läsa fil till string

5 svar · 723 visningar · startad av Nexus86

Nexus86Medlem sedan okt. 20023 030 inlägg
#1

Hur gör jag för att läsa innehållet från en fil till en string? Jag får inte till det med fstream.

#include <iostream>
#include <string>
#include <fstream>
#include <sys/stat.h>
using namespace std;

...

string filInnehall;
fstream openFile("H:\\test.txt", ios::in);
openFile.read(filInnehall, fileSize("H:\\test.txt"));
openFile.close();

...

int filesize(char* fileName) {
	struct stat stats;
	int retval = 0;

	if (stat(fileName, &stats)) {
		MessageBox(hMainWindow, "Could not get filesize", "Error", MB_OK | MB_ICONERROR);
	} else {
		retval = stats.st_size;
	}

	return retval;
}
Alpha IIMedlem sedan maj 20002 993 inlägg
#2

Brukar själv inte använda fstream utan jag använder c-funktionerna för filhantering istället.

Då gör man så här:

	FILE *pFile;
	pFile = fopen(filename, "r");
	if (pFile == NULL)
		MessageBox(NULL, "Kunde inte öppna filen!", "Fel", MB_OK | MB_ICONWARNING);

	char buffer[1024];
	while (!feof(pFile))
	{
		fgets(pFile, 1024, buffer);
		printf("%s\n", buffer);
	}

	fclose(pFile);
Nexus86Medlem sedan okt. 20023 030 inlägg
#3

Men som sagt så vill jag läsa till en string, inte en char. ;)

kobranturreMedlem sedan maj 2004693 inlägg
#4

Varför använder du dig inte av get.line (om allt är på samma rad) eller get?

PeWMedlem sedan juni 200010 432 inlägg
#5
string s_line,s_all;
ifstream in("H:\\test.txt");
while(in){
  in >> s_line;
  s_all+=s_line+"\n";
 }
//s_all innehåller nu filens innehåll
Nexus86Medlem sedan okt. 20023 030 inlägg
#6

PeW skrev:

string s_line,s_all;
ifstream in("H:\\test.txt");
while(in){
  in >> s_line;
  s_all+=s_line+"\n";
 }
//s_all innehåller nu filens innehåll

Med den där koden får jag alla ord som står i filen, ett på varje rad. :p

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)