C++ 代码不';在处理向量之后,不要打印任何内容

C++ 代码不';在处理向量之后,不要打印任何内容,c++,vector,command-line,printing,iostream,C++,Vector,Command Line,Printing,Iostream,我为我的一个类编写的这段代码不会打印它所写的内容。我四处打听过,没人能弄明白。它可能与向量或任何字符串有关吗? 最有效的方法是打印输入的命令行参数。 在cygwin上编译时,它不会遇到任何可以打印出来的错误 #include <iostream> #include <sstream> #include <vector> #include <cmath> using namespace std; int main(int argc, char *

我为我的一个类编写的这段代码不会打印它所写的内容。我四处打听过,没人能弄明白。它可能与向量或任何字符串有关吗? 最有效的方法是打印输入的命令行参数。 在cygwin上编译时,它不会遇到任何可以打印出来的错误

#include <iostream>
#include <sstream>
#include <vector>
#include <cmath>

using namespace std;

int main(int argc, char *argv[])
{
        //declare variables
        string possibleValues;
        string number;
        int inBase;
        int numLength;
        int outBase;
        int outcome;
        int baseTenTemp;
        vector<int> placeHolder;
        vector<int> finalTranslator;

        //turn base strings into integers

        baseTenTemp = 0;
        possibleValues = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        istringstream(argv[1]) >> inBase;
        istringstream(argv[3]) >> outBase;
        number = argv[2];

        cout << "inBase is " << inBase << " outBase is " << outBase << " and number is " << number << endl;

        //nothing beyond this point prints...
        //convert number into an int vector

        numLength = number.length();
        for(int i = 0; i<numLength; i++)
        {
                for(int j = 0; j <possibleValues.length(); j++)
                {
                        if(number.substr(i,i++)==possibleValues.substr(j,j++))
                        {
                                placeHolder.push_back(j);
                        }
                }
        }

        cout << "will this print?" << endl; //nope

        //convert number into base ten

        for(int i = 0; i < numLength; i++)
        {
                baseTenTemp = baseTenTemp + (placeHolder.at(i)*pow(inBase,numLength-i));
        }

        cout << baseTenTemp << endl;

        //convert base ten number into outBase number

        while(baseTenTemp>0)
        {
                finalTranslator.push_back(baseTenTemp%outBase);
                baseTenTemp=baseTenTemp/outBase;
        }

        //print converted number

        for(int i = finalTranslator.size()-1; i >=0; i--)
        {
                cout << finalTranslator.at(i);
        }
        cout << "checker" << endl;
        return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
//声明变量
字符串可能值;
字符串编号;
int数据库;
整数长度;
int outBase;
int结果;
int baseTenTemp;
矢量占位符;
矢量最终转换器;
//将基字符串转换为整数
baseTenTemp=0;
可能值=“0123456789abcdefghijklmnopqrstuvxyz”;
istringstream(argv[1])>>inBase;
istringstream(argv[3])>>outBase;
数字=argv[2];

因为函数参数评估顺序未指定(即使指定了,循环算法显然有缺陷),所以C++中的<代码> > 语句。此外,您将惊讶地发现,在C++ <代码> POW(10,2)中不是100,所以您的基数10转换代码也被破坏了。这些只是在显示代码中最直接出现的几个问题。考虑打开一些警告。我使用这些:“-Wall-Wextra-Wshadow-pedantic-Werror=vla-Wcast align-Wcast qual-Wconversion-Wsign conversion-Wsign conversion-Wsign conversion-Wsign compare-Wsign promo-Wpointer arith-Wunused-Wold style cast-woverload virtual-wsequencepoint-Wdelete complete-Wmaybe未初始化-Wmisleading缩进-Wunreachable code-Wnon virtual dtor”“您的代码会生成超过12个警告。我会修复每个警告。为了在您清除警告和未定义的行为后取得进展,我们需要测试输入和预期输出,以便能够重现您的错误。