因此,我试图强制在 an 之前0
添加一个,int
以便稍后对其进行处理。现在,我在 SO 或任何其他网站上看到的所有教程都使用与此类似的内容:
cout << setfill('0') << setw(2) << x ;
虽然这很好,但我似乎只能让它与它一起工作cout
,但是,我不想输出我的文本,我只想填充数字以供以后使用。
到目前为止,这是我的代码..
#include <iostream>
#include <string>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#include <sstream>
/*
using std::string;
using std::cout;
using std::setprecision;
using std::fixed;
using std::scientific;
using std::cin;
using std::vector;
*/
using namespace std;
void split(const string &str, vector<string> &splits, size_t length = 1)
{
size_t pos = 0;
splits.clear(); // assure vector is empty
while(pos < str.length()) // while not at the end
{
splits.push_back(str.substr(pos, length)); // append the substring
pos += length; // and goto next block
}
}
int main()
{
int int_hour;
vector<string> vec_hour;
vector<int> vec_temp;
cout << "Enter Hour: ";
cin >> int_hour;
stringstream str_hour;
str_hour << int_hour;
cout << "Hour Digits:" << endl;
split(str_hour.str(), vec_hour, 1);
for(int i = 0; i < vec_hour.size(); i++)
{
int_hour = atoi(vec_hour[i].c_str());
printf( "%02i", int_hour);
cout << "\n";
}
return 0;
}
想法是输入 a int
,然后将其转换为 astringstream
以拆分为单个字符,然后返回为整数。但是,任何小于数字 10 (<10) 的东西,我都需要在左边用 0 填充。
多谢你们
编辑:您在上面看到的代码只是我的主要代码的一个片段,这是我试图使工作的一点。
很多人很难理解我的意思。所以,这是我的想法。好的,所以该项目的整个想法是接受用户输入(时间(小时,分钟)天(数字,月数)等)。现在,我需要将这些数字分解为相应的向量(vec_minute、vec_hour 等),然后使用这些向量来指定文件名。例如:cout << vec_hour[0] << ".png"; cout << vec_hour[1] << ".png";
现在,我知道我可以使用 for 循环来处理向量的输出,我只需要帮助将输入分解为单个字符。由于我要求用户将所有数字输入为 2 位数字,因此数字 10 以下的任何数字(前面有 0 的数字)都不会拆分为数字,因为程序会在数字传递给拆分方法之前自动删除其前面的 0(即。您输入 10,您的输出将是 10,您输入 0\n9,您的输出将是一位数 9)。我不能有这个,我需要在它传递给 split 方法之前用 0 填充任何小于 10 的数字,因此它将返回 2 个拆分数字。我将整数转换为字符串流,因为那是我发现的拆分数据类型的最佳方法(以防您想知道)。
希望我能更好地解释一切:/