单词的除法与零不正确
Dividing in words works incorrectly with zeroes
最近我一直在为期末考试写代码片段。常见的任务之一是将字符串(std::string)划分为单词。在某些情况下,这些字符串可以包含整数。
我写了一个片段:
#include <sstream>
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
string str="23 005 123";
vector<int>myints;
istringstream iss(str);
string word;
while(iss>>word)
{
int a;
istringstream(word)>>a;
myints.push_back(a);
}
for (vector<int>::iterator it=myints.begin();it!=myints.end();++it)
cout<<*it<<" ";
}
它工作,虽然有一个问题。我从str得到5而不是005。似乎vc++缩小了所有的零。如何避免它只使用c++函数(不是strtok从string.h/cstring)?
我得到它在MS vc++ 2008和gcc。
谢谢!
如果您需要记住输入中的前导零的数目,并稍后使用完全相同的前导零数目打印它,那么唯一的选择是而不是存储为int
。例如,你可以把你的vector<int>
变成vector<string>
。
或者,您可以使用vector< pair<int,string> >
,它将您想要的整数与原始字符串表示形式保持在一起。
最后,如果您不关心输入中前导零的实际数目,而只是希望所有内容都用前导零填充以使其长度相等,则可以使用setfill
和setw
:
cout << setfill('0') << setw(5) << 25;
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 形状对象的旋转和缩放不正确C++
- C++ 读取文件读取文件不正确
- 关于类的 Python 文档 - 对C++的引用不正确
- 特征 LLT 模块给出不正确的结果?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 如果语句逻辑不正确
- 来自逆 vp 矩阵和相机位置的光线方向不正确
- 不正确的操作数类型 MSVC
- 数组填充了不正确的值
- 我是否不正确地集中了这些字符数组?
- 为什么除非我使用 cout,否则我的值不正确?
- 计算幂级数的数学结果不正确
- 为什么 sizeof 在 C++ 中给出不正确的字节数?
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 单词的除法与零不正确