小编tho*_*ang的帖子

如何读取动态大小的stringstream?

我想尝试使用stringstream进行分配,但我对它的工作原理有点困惑.我做了一个快速搜索,但找不到任何能回答我问题的东西.

假设我有一个动态大小的流,我怎么知道何时停止写入变量?

 string var = "2 ++ asdf 3 * c";
 stringstream ss;

 ss << var;

 while(ss){
  ss >> var;
  cout << var << endl;
 }
Run Code Online (Sandbox Code Playgroud)

我的输出将是:

2  
++  
asdf  
3  
*  
c  
c  
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我最后得到额外的'c',特别是因为_M_in_cur = 0x1001000d7""

c++ stringstream

9
推荐指数
1
解决办法
1万
查看次数

递归STL映射

我正在尝试制作一棵地图树(或者只是将一个地图的值指向另一个地图),但我不太确定如何解决这个问题。我找到了关于此的讨论:http://bytes.com/topic/c/answers/131310-how-build-recursive-map但我对那里发生的事情有点困惑。

例如,我的键是一个字符,我的值是下一个地图。这是假设的声明:

map< char, map< char, map< char.......>>>>>>>>>> root_map;
Run Code Online (Sandbox Code Playgroud)

c++ recursion dictionary stl

5
推荐指数
1
解决办法
4990
查看次数

与GCC签订STL排序问题

我一直有STL排序的问题.我正在尝试通过对象中的数据成员对对象矢量进行排序.我查了几个例子,但一旦它落入我的配置,它就不能在GCC下编译.我在Visual Studio上测试过它的工作原理.我在GCC上遇到这个错误:

no match for call to '(test::by_sym) (const stock&, const stock&)

我不明白的是,相同的代码将在Visual Studio上编译.

这是我的设置.

driver.cpp

DB t1;
t1.print();
cout << "---sorting---" << endl;
t1.sSort();
t1.print();
Run Code Online (Sandbox Code Playgroud)

class DB

vector<stock> list;

struct by_sym {
bool operator()(stock &a, stock &b)  {
return a.getSymbol() < b.getSymbol();
}
};

void DB::sSort(){
std::sort(list.begin(), list.end(), by_sym());
}
Run Code Online (Sandbox Code Playgroud)

而我的股票类只有数据成员.

GCC有解决方法吗?

我相信我的问题与类似,但那里的解决方案对我不起作用.

c++ sorting vector

3
推荐指数
1
解决办法
623
查看次数

标签 统计

c++ ×3

dictionary ×1

recursion ×1

sorting ×1

stl ×1

stringstream ×1

vector ×1