【问题标题】:Error in converting from string to int vectors从字符串转换为整数向量时出错
【发布时间】:2015-12-27 05:01:31
【问题描述】:

convert 函数中有两个错误,表明不存在到 char 的转换。我正在尝试将字符串向量转换为 int 向量,但是这个 char 业务一直在破坏一切:(。我尝试在错误前面强制转换 (char),但无济于事。感谢任何帮助/建议。

另外,根据我的实验室规则,我不能更改我的 asciiToInt 函数中的任何内容。而system("pause") 是因为我使用的是microsoft visual studio。

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void input(vector<string> &largeString1, vector<string> &largeString2);
void convert(vector<string> largeString1, vector<string> largeString2, vector<int> &largeInt1, vector<int> &largeInt2);
int asciiToInt(char ch);
void add(vector<int> largeInt1, vector<int> largeInt2, vector<int> &finalInt);
void output(const vector<int> finalInt);

int main()
{
    vector<string> largeString1;
    vector<string> largeString2;
    vector<int> largeInt1(12, 0);
    vector<int> largeInt2(12, 0);
    vector<int> finalInt(13, 0);

    for (int i = 0; i < 4; i++)
    {
        input(largeString1, largeString2);
        convert(largeString1, largeString2, largeInt1, largeInt2);
        add(largeInt1, largeInt2, finalInt);
        output(finalInt);
    }

    system("pause");

    return 0;
}
void input(vector<string> &largeString1, vector<string> &largeString2)
{
    cout << "Input:" << endl << endl;
    for (int i = 0; i < 12; i++)
        cin >> largeString1[i];
    for (int j = 0; j < 12; j++)
        cin >> largeString2[j];
}
void convert(vector<string> largeString1, vector<string> largeString2, vector<int> &largeInt1, vector<int> &largeInt2)
{
    int size1 = size(largeString1);
    int size2 = size(largeString2);
    for (int i = 0; i < 12; i++)
    {
        int dynamicsize1 = size1 - i;
        largeInt1[11 - i] = asciiToInt(largeString1[dynamicsize1]);
    }
    for (int j = 0; j < 12; j++)
    {
        int dynamicsize2 = size2 - j;
        largeInt2[11 - j] = asciiToInt(largeString2[dynamicsize2]);
    }
}
int asciiToInt(char ch)
{
    return (ch - '0');
}
void add(vector<int> largeInt1, vector<int> largeInt2, vector<int> &finalInt)
{
    for (int i = 0; i < 13; i++)
    {
        finalInt[12 - i] = largeInt1[11 - i] + largeInt2[11 - i];
    }
}
void output(const vector<int> finalInt)
{
    cout << endl << "Output:" << endl << endl << "The sum is: ";
    for (int i = 0; i < 13; i++)
    {
        cout << finalInt[i];
    }
}

【问题讨论】:

  • 当编译器说它不能从一种类型转换为另一种类型时,这通常意味着你编写的代码的逻辑有问题。告诉编译器“无论如何都要这样做”(这就是演员表所说的)并不能解决根本问题。

标签: c++ string vector casting


【解决方案1】:

我认为你的目标是读取由两个字符串表示的两个大数,然后计算它们的总和。

第一个问题:这里你不需要vector&lt;string&gt; 来代替largeStringX,你需要的是string(或vector&lt;char&gt;)。因为string是一个包含字符的容器(即char),而vector&lt;string&gt;是一个包含一些字符串的容器。

第二个问题:要获取字符串的大小(长度),而不是size(someString),应该使用someString.size()

【讨论】:

  • 当我尝试解决第二个问题时,我遇到了问题:“error: identifier "someString" is undefined. I am I lost a class file?
  • @e7kim Err... 您应该将someString 替换为您的字符串的变量名,例如largeString1.size()
【解决方案2】:

表达式asciiToInt(largeString1[dynamicsize1])asciiToInt(largeString2[dynamicsize2]) 无效,因为asciiToInt 需要char,而largeString1[dynamicsize1]largeString2[dynamicsize2] 的类型都是std::string。编译器无法将std::string 转换为char

我无法提出任何解决错误的建议,因为我不清楚您的程序应该做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2016-05-03
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多