各行にコロンで区切られた2つの文字列を含むテキストファイルがあります。C++ Stringstreamのみ最初の文字列を取得する
私は、getlineを使用して行全体を取得し、文字列ストリームを2つの文字列に分割してベクトルに配置します。このコードは、最初のパスで文字列を完全に取得するときに正常に機能します。その後、whileループの2回目のパスなどでは、新しい入力を取得しません。文字列ストリームは何らかの理由で元の最初の値を残しているようです。
if (infile.is_open()) {
std::stringstream ss;
std::string current_line;
std::string tempProxy;
std::string tempPort;
while (std::getline(infile, current_line)) {
ss << current_line;
std::getline(ss, tempProxy, ':');
std::getline(ss, tempPort);
std::cout << tempProxy << " and " << tempPort << std::endl;
}
なぜ最初の繰り返し以外のどのパスでも、current_lineの文字列を取得したくないのでしょうか?
なぜ外側のスコープに 'ss'、' tempProxy'と 'tempPort'がありますか?なぜ 'ss'は' current_line'から単純に構築された 'std :: istringstream'ではないのですか? – LogicStuff
それは奇妙なことですが、私はループの外で一度stringstreamを構築し、それを新しいストリームに供給するために>>演算子を使用すると、ループを通過するたびにそれを構築するより効率的であると考えました。 – mocode9