小编pez*_*ezy的帖子

在一个范围内使用"const auto&"来处理std :: initializer_list的元素是一个好习惯

我正在阅读C++ Primer 5th中的代码(6.2.6.具有不同参数的函数):

void error_msg(ErrCode e, initializer_list<string> il)
{
    cout << e.msg() << ": ";
    for (const auto &elem : il)
        cout << elem << " ";
    cout << endl;
}
Run Code Online (Sandbox Code Playgroud)

我总是auto直接在一个范围内使用for.像这样:

for (auto &elem : il)
Run Code Online (Sandbox Code Playgroud)

但我以前从未见过.我const auto&知道a中的元素initializer_list总是const值.这是使用的理由const auto&吗?

  • 这种方式和我以前的方式有什么区别?
  • 在这种情况下使用"const auto&"是一个好习惯吗?

c++ c++11

12
推荐指数
2
解决办法
9297
查看次数

为什么gcc-4.9.2不能支持std :: string.insert(iterator,range)来返回迭代器

根据cppreference,C++ 11应该支持:

template< class InputIt >
iterator insert( const_iterator pos, InputIt first, InputIt last );
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用g ++ 4.9.2编译以下代码时:

std::string str{ "hello world" }, addition{ "h my" };
auto iter = str.erase(str.begin(), str.begin() + 4);
iter = str.insert(next(iter), addition.begin(), addition.end()); // Error
Run Code Online (Sandbox Code Playgroud)

我收到以下错误(实例):

error: no match for 'operator=' (operand types are '__gnu_cxx::__normal_iterator<char*, std::basic_string<char> >' and 'void')
 iter = str.insert(next(iter), addition.begin(), addition.end());
      ^
Run Code Online (Sandbox Code Playgroud)

但是,Visual Studio 2013和Clang似乎没问题.

c++ c++11 gcc4.9

6
推荐指数
1
解决办法
543
查看次数

对数组参数感到困惑

这是C++ Primer第5版的练习,其中包括:

练习6.24:解释以下功能的行为.如果代码中存在问题,请说明它们是什么以及如何解决它们.

void print(const int ia[10])
{
    for (size_t i = 0; i != 10; ++i)
        cout << ia[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)

我在代码中找不到任何问题.这个练习有什么意义?

c++

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

C ++字符串流跳过字符

我有一个第一行显示“> FileName.txt”的文件。我的目标是阅读此行,并将“ FileName.txt”保存到一个名为name的变量中。所以我有:

ifstream file;

/* File opening stuff */

string line, name;

getline(file,line);

stringstream converter(line);

converter >> name;
Run Code Online (Sandbox Code Playgroud)

这样就完成了将“> FileName.txt”保存到变量中name,但是我需要删除'>'字符。我不确定在此之后是否应该这样做,或者是否可以使用来完全跳过它stringstream

c++ stringstream

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

标签 统计

c++ ×4

c++11 ×2

gcc4.9 ×1

stringstream ×1