C++ stringstream >> int 返回零

标签 c++ integer stringstream

我正在编写一个函数来返回数字的反转,即将 int(1234) 转换为 int(4321)。这是我目前拥有的:

#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>

using namespace std;


int reverse(int num) {
  stringstream ss (stringstream::in | stringstream::out);
  string initial; 
  int reversed;

  // read the number in to a string stream
  ss << num;
  initial = ss.str();

  // flush the stringstream
  ss.str("");
  for(unsigned int i(0); i <= initial.size(); i++) {
    ss << initial[initial.size() - i];
  }
  ss >> reversed;

  return reversed;
}


int main(int argc, const char *argv[])
{
  int test = 9871;
  cout << "test = " << test << endl;
  cout << "reverse = " << reverse(test) << endl;

  return 0;
}

然而这只是输出:

test = 9871
reverse = 0

我很确定问题出在 ss >> reversed 行中 reversed 被设置为 0 > 而不是 ss 的值,但我无法弄清楚这段代码有什么问题,而且它看起来应该很简单,这令人气愤。谁能帮忙?

谢谢

最佳答案

i从0开始,然后是initial.size() - i超出字符串边界。

改为ss << initial[initial.size() - i - 1];并迭代 i从 1 到 initiali.size() - 1

for(unsigned i = 0; i != initial.size(); ++i) {
  ss << initial[initial.size() - i -1];
}

或者迭代i从 1 到 initial.size()

for(unsigned i = 1; i <= initial.size(); ++i) {
  ss << initial[initial.size() - i];
}

关于C++ stringstream >> int 返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10819161/

相关文章:

c++ 使用单行 m.swap(std::stringstream()); 清除字符串流?

c++ - stringstream 在无符号类型中失败 "streaming"负值?

NQUEENS问题的C++递归解决方案无法正常工作

c++ - 将枚举传递给重载函数

c++ - 指针数据字段的访问函数

c - 编译器在转换整型常量时做什么?

c++ - 重置字符串流

c++ - std::map 迭代器和插入的行为

Python - 在没有 if 语句的情况下将数字转换为字母

php - 在PHP中将数字(1、2、3)转换为字符串(一、二、三)