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.
Es ist keine doppelte Frage. –