半伪代码:
void main {
string line;
getline(ifs, line);
replace(line.begin(), line.end(), ',', '
');
replace(line.begin(), line.end(), '
', '
');
istringstream iss(line);
string grid;
while (getline(iss, grid)) {
ret.push_back(grid);
}
}
(这段摘的)默认情况下,GCC 5在编译时会将std::string类型按c++11下std::__cxx11::basic_string<char>
来处理,这时如果你调用的库在编译时未启用c++11特性则其中的std::string实际上是std::basic_string<char>
,这时如果将c++11下的string当作参数传入非c++11的库时,就会出现error: cannot convert 'const std::__cxx11::basic_string<char>' to 'const char*'
,或者未定义的方法引用(undefined reference)