0

文字列を整数に変換しているときに、istringstream をクリアして別の数値に配置することに失敗しました。あらゆる種類のさまざまなソリューションを試しましたが、うまくいきません。いくつかの回避策がありますが、その理由を知りたいのですが...

だから基本的にこれは私のコードがどのように見えるかです

#include <iostream>
#include <string>
#include <sstream>

int main() {

  std::string a = "153";
  std::string c = "2556";

  int b;

  std::istringstream convert(a);

  convert >> b;

  std::cout << b << std::endl;

  convert.str( std::string() );
  //convert.str("");
  convert.clear();

  convert(c);

  convert >> b;

  std::cout << b << std::endl;

  return 0;
}

そして、次の出力エラー

C:\...\string to int.cpp|28|error: no match for call to '(std::istringstream {aka std::basic_istringstream<char>}) (std::string&)'|

ありがとう :)

4

2 に答える 2

4

convert(c)一度構築されたオブジェクトのコンストラクターを呼び出すことはできません。解析する新しい文字列を設定するには、関数を呼び出す必要がありますstr(c)。したがって、次のように変更する必要があります。

convert.str(c);
于 2016-04-02T14:23:03.833 に答える
2

convert(c);type の左辺値で呼び出すことができるstd::istringstream関数呼び出し演算子を定義する必要があります。これはそうではありません。operator()std::string

あなたは使用することができclear()ますstr()

std::string a = "153";
std::string c = "2556";
int b{ 0 };
std::istringstream convert{ a };
convert >> b;
std::cout << b << std::endl;
convert.clear();
convert.str(c);
convert >> b;
std::cout << b << std::endl;
于 2016-04-02T14:18:04.937 に答える