无法在字符串中插入字符

时间:2017-02-14 02:58:30

标签: string c++11 char

所以基本上我的函数遍历字符串中的每个字符并将每个字符插入另一个字符串,因此它会导致初始字符串被反转。我已经在网上查了一下,但这个问题的答案似乎不再适用了,我不确定是不是因为它们来自5年以上或者我弄错了某处。我的代码是这样的:

long reverse_num(long n){

  string new_str = "";
  string my_str = to_string(n);
  int my_int;

  for (unsigned i = 0; i < my_str.size(); ++i){
      new_str.insert(0, char my_str[i]);
  }
  my_int = stol(new_str);

  return my_int;
}

给出的错误是:在&#39; char&#39;之前的预期的主要表达式    new_str.insert(0,char my_str [i]);

我做错了什么? 谢谢!

2 个答案:

答案 0 :(得分:1)

首先,您不应在insert表达式中指定char类型。此外,没有符合您在此处所做的字符串插入功能;你可能想要其中一个:

basic_string& insert(size_type pos, size_type n, charT c);
iterator insert(const_iterator p, charT c);

所以你的插入行应该是以下之一:

new_str.insert(0, 1, my_str[i]);
new_str.insert(new_str.begin(), my_str[i]);

答案 1 :(得分:0)

您的类型转换语法很糟糕,但您似乎试图将char插入到std :: string中。这是你似乎想要的功能:

http://en.cppreference.com/w/cpp/string/basic_string/insert

  

的basic_string&安培; insert(size_type index,size_type count,CharT ch);

尝试

  

new_str.insert(0,1,my_str [i]);

您也可以使用http://en.cppreference.com/w/cpp/algorithm/reverse

  

std :: reverse(my_str.begin(),my_str.end());