作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将以下文件保存为first.cpp
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main (){
regex filenameRegex("[a-zA-Z_][a-zA-Z_0-9]*\\.[a-zA-Z0-9]+");
string s2 = "Filenames are readme.txt and my.cmd.";
sregex_iterator it(s2.begin(), s2.end(), filenameRegex);
sregex_iterator it_end;
while(it != it_end){
cout << (*it) << endl;
++it;
}
return 0;
}
尝试使用命令 g++ first.cpp -o first -std=c++11 编译它会产生以下错误:
first.cpp: In function ‘int main()’:
first.cpp:16:15: error: cannot bind ‘std::ostream {aka std::basic_ostream<char>}’ lvalue to ‘std::basic_ostream<char>&&’
cout << (*it) << endl;
^
In file included from /usr/include/c++/4.9/iostream:39:0,
from first.cpp:1:
/usr/include/c++/4.9/ostream:602:5: note: initializing argument 1 of ‘std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = std::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> > >]’
operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x)
我对这里发生的事情感到很困惑。教程here指出引用 sregex_iterator 对象应该返回一个字符串。这不是真的吗?
最佳答案
A std::sregex_iterator
是 std::match_results<std::string::const_iterator>
的迭代器.获得 std::string
除此之外,您需要使用 str()
方法:
while(it != it_end){
std::cout << it->str() << '\n';
++it;
}
顺便说一句,不要使用 std::endl
.
关于c++ - 无法将 sregex_iterator 作为流传递给 cout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27078504/
我是一名优秀的程序员,十分优秀!