C 打印从字符串转换的向量的内容

C++ printing the contents of a vector converted from a string

本文关键字:向量 转换 打印 字符串      更新时间:2023-10-16

我遇到了一些问题,弄清楚为什么这不会打印向量的元素(我是通过从输入字符串转换内容来创建的)

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <cctype>
#include <complex>
using namespace std;
int main() {
    //produce inputline string
    string inputline;
    cout << "Enter Input line" << endl;
    getline(cin, inputline);
    //strip inputline of whitespace
    inputline.erase(
        remove(inputline.begin(), inputline.end(), ' '), 
        inputline.end());
    cout << inputline << endl;
    vector<int> intvect(inputline.begin(), inputline.end());
    for (vector<int>::const_iterator iter= intvect.begin(); iter!= intvect.end(); ++iter)
        cout << *iter << endl;
}

如果我输入" 1 2 3",则第17行正确打印到控制台。

然而,对于相同的代码第19和20行打印:"495051"

我会做什么错?

我真的很感谢它的帮助。

执行此操作时:

vector<int> intvect(inputline.begin(), inputline.end());

字符被一个一个读取,其ASCII值存储在intvect中。ASCII值为1为49、2是50,依此类推。因此,这就是您将其视为输出。

如果将vector<int>转换为vector<char>,则可以成功读取单位数字,而不是多数数字的数字。例如。如果您给出了输入11 12 13,则将其视为1 1 1 2 1 3.

您必须使用空间作为定界符将数字分开,然后将它们转换为整数并将其馈送到Int矢量。

看起来您正在从字符串中构造int的向量。矢量存储在intupline中的ASCII等效。" 49 50 51"是您输入的ASCII值" 1 2 3"

以下代码应起作用,在使用char的向量而不是int。

的情况下
vector<char> intvect(inputline.begin(), inputline.end());
for (vector<char>::const_iterator iter= intvect.begin(); iter!= intvect.end(); ++iter)
cout << *iter << endl;
}