2016-10-22 2 views
-2

Ich möchte Istringstream-Variable wiederverwenden. Es ist einfach, die istringstream-Variable mithilfe der Konstruktionsfunktion zu initialisieren. Aber wenn ich versuche, es unter Verwendung = oder << zu einem neuen Wert zuzuweisen, habe ich einen Fehler bekommen. Ich benutze C++ 11. Es scheint kein Kompilierungsfehler in vs 2015 mit =. Aber gcc 4.8.2 (Devtools-2 auf Centos 6.4 x86_64) erhalten einen Fehler.wie istringstream in cplusplus wiederverwenden

Codes wie unten:

IDensity=0.5 
times=5 

Fehler:

error: no match for ‘operator=’ (operand types are ‘std::istringstream {aka std::basic_istringstream<char>}’ and ‘std::string {aka std::basic_string<char>}’) 
    sline = std::istringstream(line); 

Solutions (wie how-to-initialize-a-stdstringstream) auf Stackoverflow über die Wiederverwendung von string nicht funktioniert für mich

std::string line; 

int simmulationtimes; double InitialIDensity; 

// deploy configuration file 
std::ifstream config(configfile); 
if (!config.is_open()) 
{ 
     return false; 
} 
std::getline(config, line); 
std::istringstream sline(line); 
std::string sInitialIDensity; 
while(std::getline(sline, sInitialIDensity, '=')); 
InitialIDensity = std::stod(sInitialIDensity); 

std::getline(config, line); 
std::string ssimmulationtimes; 
sline.str(""); sline.clear(); 
sline = std::istringstream(line); 
while (std::getline(sline, ssimmulationtimes, '=')); 
simmulationtimes = std::stoi(ssimmulationtimes); 

Konfigurationsdatei sein sollte . Irgendwelche Ideen über die Wiederverwendung von istringstream? Vielen Dank dass Sie darüber nachdenken.

+0

Es ist keine doppelte Frage. –

Antwort