问题描述
#include 'iostream'#include 'forward_list'#include 'string'using namespace std;int main() {forward_list<int> fl1 = { 1, 2, 3 }; for (auto iter = fl1.begin(); iter != fl1.end(); ++iter) {cout << *iter << ' '; } cout << endl; //以上都是没什么问题的,在控制台会打印出1 2 3 //但是……forward_list<string> fl2 = { 'hello', 'world', 'Cpp' }; for (auto iter = fl2.begin(); iter != fl2.end(); ++iter) {cout << *iter << ' '; //这里VS报错没有对应<<的元素, 请问这是为什么?//而且当我用printf(%s, *iter)打印时虽然编译器不报错但是输出的结果却是乱码…… } cout << endl; return 0;}
问题解答
回答1:g++ 6.3.0 x86_64-posix-seh-rev2 没有问题clang++ 4.0.0 Target: x86_64-pc-windows-msvc 没有问题这种情况使用 for(const auto& item : list) 更好.